[英]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.