我一直在尝试向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/

10-13 01:56