单击后退按钮时颤振如何执行

Flutter how to execute when clicking back button

我有一个从底部选项卡导航调用的页面,它执行一个 initState 函数,然后我通过单击按钮导航到一个页面,该页面包含详细信息和要执行的操作,但是当我单击后退按钮转到原始页面时, initState 不会再 运行 了,我发现因为当你把一个放在最上面时 Flutter 不会破坏页面,因为 NAV 不在新页面上,因为它不在菜单中,我该怎么做initState 运行 再次点击后退按钮,或者是否有另一种方式来监听从后退按钮导航和 运行 需要更新数据的代码?

任何帮助都会很棒。

您可以覆盖 AppBar 上的默认后退箭头,然后指定您希望 return 在调用 Navigator.pop 时触发状态更改的值:

伪代码

所以您需要在导航按钮的 onPressed 回调中包含类似的东西

onPressed: ()async{
            var nav = await Navigator.of(context).push(newRoute);
            if(nav==true||nav==null){
              //change the state
            }
          },

在你的新路线中你应该有这样的东西

new AppBar(
        leading: new IconButton(
          icon: new Icon(Icons.arrow_back),
          onPressed: (){Navigator.pop(context,true)}
        ),

我正在检查 nulltrue 这两个值,因为当用户点击 android 屏幕上的返回按钮(屏幕底部)。我也相信 null 也会被 Flutter 中的默认 BackButton returned,所以你实际上不需要覆盖 leading 属性,但我自己没有检查过,所以它可能值得一试。

您可以使用 WillPopScope 收听流行音乐(创建一个注册回调的小部件,以否决用户尝试关闭封闭的 [ModalRoute]。-> 来自文档):

@override
Widget build(BuildContext context) {
 return WillPopScope(
  onWillPop: () {
    print('Backbutton pressed (device or appbar button), do whatever you want.');

    //trigger leaving and use own data
    Navigator.pop(context, false);

    //we need to return a future
    return Future.value(false);
  },
  child: Scaffold(
  ...
  ),
 );
}

希望我答对了你的问题,这对你有帮助:)!

//if you want to perform  any operation on back button so you can use WillPopScope Widget and managed your code inside onWillpop method 

   
 @override
 Widget build(BuildContext context) {
        return WillPopScope( 

        child:Column()),

        onWillPop: onBackPress);
   }
        
   
// this is onBackPress method
 Future<bool> onBackPress() {
        // your code 
   return Future.value(false);
 }