Когда сохранять данные во Flutter (эквивалент onPause)
Я пишу приложение Flutter для мобильных устройств. Я привык к парадигме Android, в которой вы сохраняете все изменения, сделанные пользователем в
onPause
, который обычно вызывается всякий раз, когда текущий экран переходит в фоновый режим. Я не могу найти эквивалент Flutter.
Во всех примерах, которые я вижу, есть своего рода кнопка «Отправить», но я ожидаю, что приложение сохранит данные, когда я нажимаю кнопку «Назад» или «Домой» (или если я нажимаю значок сохранения на панели приложения).
Где приложения Flutter обычно сохраняют состояние в хранилище?
1 ответ
Вы можете использовать
WidgetsBindingObserver
чтобы получить
AppLifecycleState.paused
:
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
switch (state) {
case AppLifecycleState.resumed:
break;
case AppLifecycleState.inactive:
break;
case AppLifecycleState.paused:
_saveState();
break;
case AppLifecycleState.detached:
break;
}
}
void _saveState() {
// Save state here
}
@override
Widget build(BuildContext context) => Scaffold(
body: WillPopScope(
onWillPop: () async {
_saveState();
return true;
},
child: SafeArea(
child: Container(),
),
),
);
}
Другой вариант - использовать hydrated_bloc , который автоматически сохранит состояние для вас.