我在应用程序中使用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
答案 0 :(得分:0)
答案 1 :(得分:0)
我来这里是为了找到解决办法,但这里没有解决办法。
请注意,此问题仅发生在 CupertinoTabScaffold 和 CupertinoTabBar 上。
后来,我从FlutterGallery官方源代码中找到了解决方案。这解决了我的问题,希望对您也有帮助。
getProId()
答案 2 :(得分:0)
我是RFlutter Alert插件的开发人员。正如@Kevin Khew在正确用法之前提到的:
Navigator.of(context, rootNavigator: true).pop();
并使用最新版本V1.1.0修复了此问题,请对其进行升级。如果问题仍然存在,我将准备进一步的帮助。
* @ user2570135,如果可以解决您的问题,请标记接受的@Kevin Khew答案。