android - 在 flutter 中显示全屏加载小部件

标签 android ios flutter flutter-layout

我想在调用 API 时在 flutter 中显示全屏加载 View 。但是当我在脚手架主体中添加加载小部件时,它会出现在应用栏和底部导航器之后。

我花了很多时间来全屏显示加载 View 。另外,我想在调用 API 时防止返回操作。

最佳答案

那么,既然您正在使用 Scaffold,那么就利用它的 showDialog() 方法。

它有一个名为 barrierDismissible 的属性,如果您将其设置为 false,则用户将无法关闭屏幕或与屏幕外的屏幕进行交互。

void _openLoadingDialog(BuildContext context) {
  showDialog(
    barrierDismissible: false,
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        content: CircularProgressIndicator(),
      );
    },
  );
}

完成 API 加载后,调用 Navigator.pop(context); 关闭对话框。

要防止用户单击对话框上的后退按钮,将其关闭,请将您的 Scaffold 封装在 WillPopScope 小部件中并实现 onWillPop 函数。

@override
Widget build(BuildContext context) {
  return WillPopScope(
      child: Scaffold(
        body: Container(),
      ),
      onWillPop: _onBackButton
  );
}

Future<bool> _onBackButton() {
  // Implement your logic
  return Future.value(false);
}

如果返回 false,用户将无法按下后退按钮。所以使用您想要的任何逻辑,例如“如果我正在加载返回 false,否则返回 true”。

关于android - 在 flutter 中显示全屏加载小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56579440/

相关文章:

ios - 像在 iMessage 中一样在 Uitextview 中添加 UIImageview

Android KSOAP2 SSL java.security.cert.CertPathValidatorException

java - 是否可以查明是否安装了 apk 以及是否安装了应用程序

Android SDK Manager - 你需要安装所有的 Android 平台吗?

ios - 为什么这个 Swift 结构实例化会崩溃?

sql - Flutter将列表映射到对象

java - 字符串格式参数在 android 上的 string.xml 中不起作用

iphone - 为 iOS4.3 和 iOS5.0 构建问题

flutter - 从类变量添加 onPressed 函数

firebase - 为什么 flutter 会为类内的 Firestore 方法返回错误,但在小部件内却很好?