[英]onDestroy or dispose in flutter
我正在开发一个笔记应用程序,我想在关闭该应用程序时(从最近的应用程序中删除该应用程序时)保存我的笔记。 我尝试了dispose()
方法,但它没有用。 我试过了:
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
print(state);
final isDetached = state == AppLifecycleState.detached;}
但它也不起作用。 它不打印分离状态,只打印AppLifecycleState.paused
AppLifecycleState.inactive
AppLifecycleState.resume
那我该怎么办!!
如果您正在观察应用程序生命周期 state,您的代码应该如下所示:
class AppLifecycleReactor extends StatefulWidget {
const AppLifecycleReactor({ Key? key }) : super(key: key);
@override
State<AppLifecycleReactor> createState() => _AppLifecycleReactorState();
}
class _AppLifecycleReactorState extends State<AppLifecycleReactor> 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) {
print(state);
}
@override
Widget build(BuildContext context) {
return Widgets;
}
}
总结:
with WidgetsBindingObserver
之后使用extends State
WidgetsBinding.instance.;addObserver(this);
在initstate
WidgetsBinding.instance.;removeObserver(this);
在dispose
更多信息检查: https://api.flutter.dev/flutter/widgets/WidgetsBindingObserver-class.html
dispose() function 仅在StatefulWidget中可见
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final AppRouter _appRouter = AppRouter();
@override
Widget build(BuildContext context) {
return BlocProvider<CounterCubit>(
create: (context) => CounterCubit(),
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
onGenerateRoute: _appRouter.onGenerateRoute,
),
);
}
@override
void dispose() {
super.dispose();
// dispose your code here
}
}
请考虑使用Firebase并在每次编辑后保存,例如在使用rx.debounce
中的rx.debounce进行编辑后 500 毫秒后保存。
您不能指望应用程序在关闭时真的能够执行处置甚至将某些内容保存到数据库中。 从最近的列表中删除一个应用程序会很快结束该应用程序(杀死该应用程序),这就是它甚至适用于挂起/崩溃的应用程序的原因。
在这种情况下,您始终可以使用共享首选项。 共享首选项用于将数据保存在本地存储中,实现也非常简单。 不要担心它不会让您的应用程序滞后或变慢。 它工作得非常顺利
https://pub.dev/packages/shared_preferences
如果有帮助,请点赞
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.