Provider用法

341 阅读1分钟

第一步:定义VM

class OneModel with ChangeNotifier{
  int currentIndex = 0;
  changeIndex(){
    currentIndex = 1;
    notifyListeners();
  }
}

第二步:

runApp(
  MultiProvider(
    providers: [
      ChangeNotifierProvider(create: (_)=>OneModel()),
    ],
    child: MyApp(),),
);

缺少这步报错 Error: Could not find the correct Provider above this ConversationInner Widget 第三步:触发

onPressed: (){
  Provider.of<OneModel>(context,listen: false).changeIndex();//1
  context.read<StState>().changeTheme();//2
  OneModel().bindBarkInfo();// 错误写法 这样也会执行bingBarkInfo()方法,但是不会更新渲染
},

第四步:渲染 1.Consumer用法

Consumer<OneModel>(builder: (context,onemodel,child){
  return Text('${onemodel.currentIndex}');
}),

2.watch用法

Text('${context.watch<StState>().value}'),