我希望我了解$ array=("one" "two" "three")
$ jq '.x.y = $ARGS.positional' payload.json.tpl --args "${array[@]}"
{
"foo": "bar",
"x": {
"y": [
"one",
"two",
"three"
]
}
}
的工作方式。
我有A页和B页。当我单击页面B的后退设备按钮(didChangeAppLifecycleState
时,我希望pageA中的Navigator.of(context).pop();
会被调用,但不会。
PageA
didChangeAppLifecycleState
这是pageA中的class _ABCState extends State<ABCrList> 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) {
if (state == AppLifecycleState.resumed) {
setState(() {
print(...);
});
}else{
print(state.toString());
}
}
....
。用于调用后端服务的功能。
initState
答案 0 :(得分:0)
您的思维方式是onResume
工作的Android方式,但是在Flutter中,事情并非以这种方式发生。
通常,当系统将应用程序置于后台或将应用程序返回至前台时会调用此方法。
主要有4种状态:
resumed
:该应用程序可见并且正在响应用户输入。
inactive
:该应用程序处于非活动状态,没有收到用户输入。
paused
:该应用程序当前对用户不可见,未响应用户输入,并且在后台运行。
detached
:该应用程序仍托管在Flutter引擎上,但已脱离任何主机视图。
编辑:
从PageB
导航到PageA
时,请使用类似以下内容的
Navigator.pushNamed(context, "/pageB").then((flag) {
if (flag) {
// you're back from PageB, perform your function here
setState(() {}); // you may need to call this if you want to update UI
}
});
在PageB中,您可以使用
Navigator.pop(context, true);