#redux #dart #flutter #sharedpreferences
#сокращение #dart #флаттер #sharedpreferences
Вопрос:
Я пытался добавить redux в свое приложение flutter
Я хочу установить тему 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. Вам следует рассмотреть состояние инициализации, в котором вы можете получить это
String
и ожидать его, прежде чем передавать его в AppState
Ответ №1:
Что вы хотите сделать, так это загрузить тему как часть вашего 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;
}