Flutter对话框无法关闭(使用rFlutter警报框)

时间:2019-08-03 13:31:18

标签: flutter

我在应用程序中使用RFlutter(https://github.com/RatelHub/rflutter_alert)警报时遇到问题。但是显示了对话框,该对话框的pop命令删除了基础页面,而不是警报框。

这是我的代码段

这是主页

class HomePage extends StatefulWidget {
  HomePage({Key key, this.title}) : super(key: key);
  final String title;
  @override
  _HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
  int currentIndex = 0;
  final GlobalKey<NavigatorState> firstTabNavKey = GlobalKey<NavigatorState>();
  @override
  Widget build(BuildContext context) {
    return CupertinoTabScaffold(
      tabBar: CupertinoTabBar(
        backgroundColor: Colors.white54,
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(CupertinoIcons.search),
            title: Text('search'),
          ),
        ],
        onTap: (index) {
          if (currentIndex == index) {
            switch (index) {
              case 0:
                firstTabNavKey.currentState.popUntil((r) => r.isFirst);
                break;
            }
          }
          currentIndex = index;
        },
      ),
      tabBuilder: (BuildContext context, int index) {
        switch (index) {
          case 0:
            return CupertinoTabView(
              navigatorKey: firstTabNavKey,
              builder: (BuildContext context) => Page1(),
              defaultTitle: 'search',
            );
            break;
        }
        return null;
      },
    );
  }
}

这是我的第1页代码...显示警报框,但是当按下“ COOL”按钮时。警报停留在屏幕上,但底部页面正在切换

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:rflutter_alert/rflutter_alert.dart';

    class Page1 extends StatefulWidget {
      Page1();
      @override
      _Page1State createState() => new _Page1State();
    }
    class _Page1State extends State<Page1> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: RaisedButton(
                onPressed: () => Alert(
                      context: context,
                      type: AlertType.error,
                      title: "RFLUTTER ALERT",
                      desc: "Flutter is more awesome with RFlutter Alert.",
                      buttons: [
                        DialogButton(
                            child: Text(
                              "COOL",
                              style: TextStyle(color: Colors.white, fontSize: 20),
                            ),
                            onPressed: () => Navigator.pop(context))
                      ],
                    ).show()),
          ),
        );
      }
    }

完整代码在这里 https://github.com/RatelHub/rflutter_alert/issues/20

3 个答案:

答案 0 :(得分:0)

您描述的问题未包含在您的代码示例中。您的问题与[:-2]有关,您正在将其传递给BuildConext方法。我准备了一个最小的示例,以一个最小的示例显示您的警报:

build()

dmeo

答案 1 :(得分:0)

我来这里是为了找到解决办法,但这里没有解决办法。

请注意,此问题仅发生在 CupertinoTabScaffold CupertinoTabBar 上。

后来,我从FlutterGallery官方源代码中找到了解决方案。这解决了我的问题,希望对您也有帮助。

https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/cupertino/cupertino_navigation_demo.dart#L122

getProId()

答案 2 :(得分:0)

我是RFlutter Alert插件的开发人员。正如@Kevin Khew在正确用法之前提到的:

Navigator.of(context, rootNavigator: true).pop();

并使用最新版本V1.1.0修复了此问题,请对其进行升级。如果问题仍然存在,我将准备进一步的帮助。

* @ user2570135,如果可以解决您的问题,请标记接受的@Kevin Khew答案。