【问题标题】:How to redirect to the next page without pressing a button with flutter?如何在不按下按钮的情况下重定向到下一页?
【发布时间】:2022-11-14 01:06:54
【问题描述】:

我想移动到下一页而不单击带有颤动的按钮。 就在更改按钮的值之后,我必须在没有任何自我交互的情况下延迟一段时间后重定向到下一页。 这是代码:

   initialData: BluetoothDeviceState.disconnected,
                      builder: (c, snapshot) {
                        if (snapshot.data == BluetoothDeviceState.connected) {
                          return ElevatedButton(
                            child: const Text('CONNECTED'),
                            onPressed: () => Navigator.of(context).push(
                                MaterialPageRoute(
                                    builder: (context) => MainScreen())),
                          );
                        }

【问题讨论】:

  • 你能添加更多代码并解释更多吗? Just after changing the value of a button 是什么意思?
  • @eamirho3ein 我编辑了我的问题。我想在按钮文本连接后重定向到下一个屏幕

标签: flutter dart flutter-navigation


【解决方案1】:

你可以试试这个:

if (snapshot.data == BluetoothDeviceState.connected) {
  WidgetsBinding.instance.addPostFrameCallback((_) {
        Navigator.of(context).push(
            MaterialPageRoute(builder: (context) => MainScreen()));
  });
  return ElevatedButton(
    child: const Text('CONNECTED'),
    onPressed: () => Navigator.of(context).push(
        MaterialPageRoute(
            builder: (context) => MainScreen())),
  );
}

【讨论】:

    【解决方案2】:

    虽然连接取决于布尔,但您可以这样做

    if (snapshot.data == BluetoothDeviceState.connected) {
         // a frame delay
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
        Navigator.of(context)
            .push(MaterialPageRoute(builder: (context) => MainScreen()));
      });
    }
    

    【讨论】:

    • 我试过这个:`return (Text('CONNECTED') WidgetsBinding.instance.addPostFrameCallback((timeStamp) { Navigator.of(context).push(MainScreen()); }); );` 但我得到了: 预计会找到')'
    • 在最后添加一个)
    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多