我一直在尝试向flutter应用程序添加redux
我想基于用户共享的首选项设置MaterialUi主题
void main() {
final store = Store<AppState>(
reducer,
initialState: AppState.initialState(),
);
runApp(MyApp(store: store));
}
我有这个功能,返回什么用户首选项
static Future<String> getActiveTheme() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(_activeTheme) ?? "Light";
}
我的AppState看起来像这样
class AppState {
String theme;
User user;
AppState(this.theme, this.user);
AppState.initialState()
: theme = 'Light',
user = null;
}
我想要代替
theme: 'Light'
来获得theme: getActiveTheme()
提前致谢
最佳答案
您要做的是将主题作为main
方法的一部分加载。然后,您可以将已加载的主题传递到AppState
构造函数中。并非我已将async
添加到您的main
方法中,并将theme
上的AppState
设置移至了参数。
void main() async {
var theme = await getActiveTheme();
final store = Store<AppState>(
reducer,
initialState: AppState.initialState(theme),
);
runApp(MyApp(store: store));
}
class AppState {
// ...
AppState.initialState(this.theme)
: user = null;
}
关于redux - 如何从共享首选项设置initialState?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55361805/