Flutter状态管理

Google推荐使用使用provider进行状态管理。
class Counter with ChangeNotifier{
int value=0;

increment(){
value++;
notifyListeners();//它会通知所有听众进行刷新。
}
}

flutter入口文件
void main() {
var counter = Counter();
runApp(ChangeNotifierProvider.value(
value: counter,
child: MyApp(),
),
);
}

//需要额外传递值
void main() {
final counter = Counter();
final text= "hello world";
runApp(
Provider<String>.value(
value: text,
child: ChangeNotifierProvider.value(
value: counter,
child: MyApp(),
),
),
);
}

多个Provider时MultiProvider
void main() {
final counter = Counter();
final counter2 = Counter2();
final text= "hello world";

runApp(
MultiProvider(providers: [
ChangeNotifierProvider.value(
value: counter),
Provider.value(value: text,child:
ChangeNotifierProvider.value(value: counter2))
],child: MyApp())
);
}

获取对象状态
class MyText extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.only(top: 200),
child: Text(Provider.of<Counter>(context).value.toString()),
);
}
}

class MyButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: RaisedButton(onPressed: () {
Provider.of<Counter>(context).increment();
}, child: Text('递增')),
);
}
}
Button直接回调
class MyButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Consumer(builder: (context,Counter counter,child)=>RaisedButton(onPressed: () {
counter.increment();
}, child: Text('递增'))),
);
}
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容