【问题标题】:Handling Android's native back button on flutter_split_view在 flutter_split_view 上处理 Android 的原生后退按钮
【发布时间】:2023-01-12 03:03:26
【问题描述】:

我目前正在开发一个应用程序,它使用 flutter_split_view 插件来自动显示拆分视图。不过,有一个主要的烦恼,从子屏幕(即右侧的小部件)按下 Android 的本机后退按钮只会关闭应用程序。

我尝试使用 WillPopScope 在子屏幕上调用 SplitView.of(context),因为 SplitView 构造函数不接受外部控制器(例如 TabController 用于选项卡),我可以调用它以将后退按钮调用重定向到 @987654326 @ 反而。

import 'package:flutter/material.dart';
import 'package:flutter_split_view/flutter_split_view.dart';

class ChildPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    SplitViewState splitView = SplitView.of(context);
    return WillPopScope(
      onWillPop: () async {
        splitView.pop();
        return false;
      },
      child: Scaffold(...),
    );
  }
}

有办法解决这个问题吗?

【问题讨论】:

  • 请包括一个完整的示例,因为其他人将能够更准确地帮助您。 sn-p 应该是可运行的

标签: flutter flutter-android


【解决方案1】:

您可以使用 WillPopScope 小部件来捕获后退按钮按下事件,然后使用 splitView.pop() 方法导航到上一个屏幕,而不是关闭应用程序。

通过用 WillPopScope 小部件包装 Scaffold 小部件,您可以拦截后退按钮按下事件,然后使用 splitView.pop() 方法导航到上一个屏幕。 onWillPop 回调应该返回 Future,返回 false 将阻止后退按钮执行其默认操作,在这种情况下关闭应用程序。这样您就可以将后退按钮调用重定向到 SplitView。

如果正确实施,这应该会按预期工作。但是,您应该在实际设备上对其进行测试,以确保其行为符合您的预期。

【讨论】:

    【解决方案2】:
    • 不要以为split_view可以帮你把当前页面拆分成几个单独运行的StateFullWidget。您看到的所有页面仅受当前页面的上下文控制。因此,您在子类小部件中引用的 pop 将仅适用于当前页面。如果当前页面是最后一页,运行pop后就没有页面了,所以程序退出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-26
      • 2013-04-22
      • 2013-05-10
      • 1970-01-01
      • 2011-04-02
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多