美文网首页
flutter中provider使用

flutter中provider使用

作者: xmb | 来源:发表于2019-10-21 11:23 被阅读0次

    flutter官方provider

    使用技巧

    Consumer

    1、可以在获取不到context的情况下来获取值。
    2、可以避免不必要的rebuild,正常情况下,当值发生改变时,除非对provider.of设置了listen: false,只要和provider.of相关的context下的widget都会被rebuild,这个情况可以使用Consumer来处理,只rebuild一部分。
    例如:

    FooWidget包含BarWidget,只rebuild BarWidget
    @override
     Widget build(BuildContext context) {
       return FooWidget(
         child: Consumer<Bar>(
           builder: (_, bar, __) => BarWidget(bar: bar),
         ),
       );
     }
    
    FooWidget包含BarWidget,只rebuild FooWidget
    @override
     Widget build(BuildContext context) {
       return Consumer<Foo>(
         builder: (_, foo, child) => FooWidget(foo: foo, child: child),
         child: BarWidget(),
       );
     }
    

    3、Consumer只能用在MultiProvider中

    MultiProvider(
      providers: [
        Provider(builder: (_) => Foo()),
        Consumer<Foo>(
          builder: (context, foo, child) =>
            Provider.value(value: foo.bar, child: child),
        )
      ],
    );
    
    Selector

    相关文章

      网友评论

          本文标题:flutter中provider使用

          本文链接:https://www.haomeiwen.com/subject/ghxtvctx.html