flutter中provider使用

2019-10-21  本文已影响0人  xmb

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
上一篇下一篇

猜你喜欢

热点阅读