flutter 1.12 Provider 4.0 可以不必挂载到顶部节点使用

最近在开发app时遇到了一个图片选择的功能,在app端使用image_picker插件后出现了整页重绘造成的闪屏问题,所以就采用了官方推荐的 Provider 方式控制重绘,简单使用了 notify -> consumer 的方式,效果虽然达到了预期,但是随之而来的问题是Provider 组件在官方说明上要求挂载到顶部根节点,可是万一app中需要使用的notify 多了怎么办呢?毕竟有一些Notify 只是在当前页面使用而已,如果挂载到根节点,会不会造成性能下降和不必要的开销呢?果断尝试在页面的 ScaffoldWidget 中挂载,居然也起到效果了,记录一下,这样只要不是全局的,跨页面的数据交互,基本上可以减少很多开销。

 

class RegisterPage extends StatefulWidget {
  @override
  State createState() {
    return new _registerState();
  }
}

class _registerState extends State {

  @override
  Widget build(BuildContext context) {
    final GlobalKey _formKey = new GlobalKey();
    final size = MediaQueryData.fromWindow(window).size;
    print(size);

    return new Scaffold(
          key: UniqueKey(),
          appBar: new AppBar(
          title: new Text('注册'),
          centerTitle: true,
          backgroundColor: Color(0xFFCD0000)),
            body:
                new MultiProvider(
                 providers: [
                        ChangeNotifierProvider(create: (_) => PayCodeImageInfo()),
                  ],
                  child: 【Widgets】
                )
            );
   }
}

 

你可能感兴趣的:(Flutter)