【问题标题】:Set indexStack to 0 when back button is pressed按下后退按钮时将 indexStack 设置为 0
【发布时间】:2021-01-17 10:39:45
【问题描述】:

我有一个 IndexStack 作为主要的导航方式,但是当用户点击后退按钮时,导航会返回到上一个脚手架。

目前我正在使用 WillPopScope(),但我一直收到错误提示...

type '() => void' 不是 type '() => Future' 的子类型

这是代码。

NavPage.dart

class NavPages extends StatefulWidget {
  @override
  _NavPagesState createState() => _NavPagesState();
}

List<Widget> screens = new List();
List<String> site = new List();

class _NavPagesState extends State<NavPages> {
  int _selectedIndex = 0;

  @override
  Widget build(BuildContext context) {
    site.add('..............');
    return Consumer<User>(
      builder: (context, value, child) {
        screens.add(GotKeysSites(
          user: value,
          departmentClicked: (title) {
            if (title.isNotEmpty) {
              var pos = site.indexWhere((element) => element == title);
              setState(() {
                _selectedIndex = pos;  //Here the index is updated however, i receive the error commented above.
              });
            }
          },
          departmentCallback: (title, departmentsAssigned, startTime, endTime) {
            if (title.isNotEmpty && departmentsAssigned.isNotEmpty) {
              site.add(title);
            }
          },
        ));
        return Scaffold(
          body: IndexedStack(
            index: _selectedIndex,
            children: screens,
          ),
        );
      },
    );
  }
}

typedef void ReturnIndex();

以及我调用 ReturnIndex 函数的类

return WillPopScope(
      onWillPop: widget.returnIndex,
      child: Scaffold(
      ));

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    OnWillPop 范围希望您为其提供适当的功能,因此请尝试执行以下 2 项更改中的任何一项
    CHANGE1

    return WillPopScope(
          onWillPop:(){ 
             widget.returnIndex;
          },
          child: Scaffold(
          ));
    


    更改2

    void returnIndex(){//Future<void> if it is a future object
    }
    

    【讨论】:

    • 第二个选项解决了这个问题,感谢您的回答:)
    • @LuisCardozaBird 欢迎来到 stackoverflow。如果答案有效,你给它一个赞成票(就像你一样)并接受它作为答案,这样每个人都知道要遵循什么
    • 我知道,只是我要等5分钟jajajajaja
    【解决方案2】:

    我还不能发表评论,但要补充一下上面的答案: WillPopScope 确实会寻找未来来响应 onWillPop,因此您需要在定义(n 异步)函数/分配 Future 的值时考虑到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 2013-07-11
      • 1970-01-01
      • 2019-10-20
      相关资源
      最近更新 更多