我有一个基于{:items=>
["cust.category=Jackets,Belts & Buttons",
"items.receive_dt=2 years",
"prdcts.brand=Armani"]
}
的Flutter应用。我看到了example和StatelessWidget
,它使程序员可以在StatefulWidget
方法中执行某些操作。我试图查看dispose()
是否也提供了这样的功能?
StatelessWidget
已更新
import 'package:flutter/material.dart';
import 'routes.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
theme: ThemeData(
primarySwatch: colorCustom,
fontFamily: 'Roboto',
),
initialRoute: '/',
routes: routes,
);
}
}
嗯,更新代码后,import 'package:flutter/material.dart';
import 'routes.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
Future<bool> _exitApp(BuildContext context) {
return showDialog(
context: context,
child: new AlertDialog(
title: new Text('Do you want to exit this application?'),
content: new Text('We hate to see you leave...'),
actions: <Widget>[
new FlatButton(
onPressed: () => Navigator.of(context).pop(false),
child: new Text('No'),
),
new FlatButton(
onPressed: () => Navigator.of(context).pop(true),
child: new Text('Yes'),
),
],
),
) ??
false;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
home: WillPopScope(
child: MaterialApp(
theme: ThemeData(
primarySwatch: colorCustom,
fontFamily: 'Roboto',
),
initialRoute: '/',
routes: routes
),
onWillPop: () => _exitApp(context)
)
);
}
不会弹出吗?
答案 0 :(得分:2)
简短的回答是“否”,dispose()
中没有类似于StatelessWidget
的方法,因为顾名思义,它不维护State
。
长答案是dispose()
方法-
当此State
对象再也不会构建时,框架将调用此方法。处理完框架调用后,State
对象被视为已卸载,并且已安装的属性为false
。此时调用setState
是错误的。
生命周期的这一阶段是终极阶段:无法重新挂载已处置的State
对象。
由于StatelessWidget
没有与之关联的State
,因此没有dispose()
方法。
StatelessWidgets的类似解决方案-
那么,如果只想在从导航堆栈中弹出StatelessWidgets
或从StatelessWidget
返回一些数据之后才运行一些代码,该怎么办?
嗯,this Flutter docmentation页面上对此进行了解释,并附带示例。希望这会有所帮助!