provider

定义:

class UserInfo with ChangeNotifier{
  String _id;
  String _nick;

  String get id=>_id;
  String get nick=>_nick;

  void setNick(String nick){
    this._nick=nick;
    //通知更新
    notifyListeners();
  }
 
}

main函数:

void main(){
  runApp(
    ChangeNotifierProvider<UserInfo>.value(
      value: UserInfo(),
      child: MyApp(),
    )
    );
}

使用:

//方式一:
Text('昵称:${Provider.of<UserInfo>(context).nick}');

//方式二:
Consumer<UserInfo>(
        builder: (context, userInfo, child)=>Text('昵称:${userInfo.nick}')
);

//方式三:
Text('昵称:${context.watch<UserInfo>().nick}');

修改:

//方法1:
Provider.of<UserInfo>(context).setNick('Lucy');
//方法2:
//因为setNick方法内部调用了notifyListeners(),可以通知到依赖组件rebuild
userInfo.setNick('Lucy');