【发布时间】:2021-04-03 21:10:09
【问题描述】:
【问题讨论】:
标签: flutter flutter-layout provider
【问题讨论】:
标签: flutter flutter-layout provider
我使用库Provider。详情见provider。
首先,创建UserInfoProvider的你们:
class UserInfoProvider extends ChangeNotifier {
UserInfoData _userInfoData;
UserInfoData get userInfoData => this._userInfoData;
UserInfoProvider(){
_userInfoData = new UserInfoData();
}
void setUserInfoData(UserInfoData userInfo){
_userInfoData = userInfo;
notifyListeners();
}
}
之后,您需要在main 处理此提供程序:
ChangeNotifierProvider<UserInfoProvider>(
create: (_) => provider,
child: MaterialApp(
title: 'My App',
),
)
然后,当用 Consumer 包装 Home UI 时:
Consumer<UserInfoProvider>(
builder: (_, userInfoProvider, __){
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
//get data from provider in Home UI
Text(userInfoProvider.userInfoData.displayName),
],
),
);
}
)
最后,您可以在另一个屏幕上更新,HomeScreen 中的Text 会自动更新 UI。
Provider.of<UserInfoProvider>(context, listen: false).setUserInfoData(userDataUpdate);
这对于检查登录用户的状态非常有用。
【讨论】: