Как установить initialState из общих настроек? - PullRequest
0 голосов
/ 26 марта 2019

Я пытался добавить редукцию к своему приложению флаттера

Я хочу установить тему 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()

Заранее спасибо

1 Ответ

0 голосов
/ 26 марта 2019

Что вы хотите сделать, это загрузить тему как часть вашего 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...