- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Flutter 构建 Android 应用程序。我在以编程方式关闭简单对话框时遇到问题。
现在我有一个名为 ListVessel 的有状态页面。此页面包含数组 otherVessels 中的 listTile。
以下是此页面的代码。
class ListVessel extends StatefulWidget {
final Function() notifyParent;
ListVessel({Key key, @required this.notifyParent}) : super(key: key);
@override
_ListVesselState createState() => _ListVesselState();
}
class _ListVesselState extends State<ListVessel> {
@override
Widget build(BuildContext context) {
return ListView.separated(
separatorBuilder: (context, index) => Divider(color: Colors.blueGrey),
itemCount: otherVessels.length,
itemBuilder: (context, index) {
return ListTile(
title: Text("Name: "+otherVessels[index]["shipName"]),
onTap: () {
showDialog (
context: context,
builder: (_){
return otherTap(idx:index);
}
);
}
);
},
);
}
}
}
从上面的代码中,可以点击每个瓦片(容器)并调用 otherTap() 方法。 otherTap() 方法显示一个简单的对话框(弹出窗口),其中包含被点击容器的详细信息。
下面是 otherTap() 的代码。
class otherTap extends StatefulWidget{
otherTap({Key key, @required this.idx}) : super(key: key);
final int idx;
@override
_otherTapState createState() => new _otherTapState();
}
class _otherTapState extends State<otherTap>{
@override
Widget build(BuildContext context){
_isDialogShowing = true;
return SimpleDialog(
title: Text(otherVessels[widget.idx]["shipName"]),
children: <Widget>[
SimpleDialogOption(
child: Text('MMSI : ' + otherVessels[widget.idx]['MMSI']),
)
],
);
}
}
如果对话框正在显示,我有一个全局 bool 变量 (_isDialogShowing) 来保持跟踪。
现在我希望显示对话框(弹出窗口)在 5 秒后关闭。
我使用 Navigator.pop() 关闭 MyApp 函数中的对话框。我把它放在 setstate() 函数中。
void main() {
runApp(
MyApp(storage: CounterStorage()),
);
}
class MyApp extends StatefulWidget {
MyApp({Key key, @required this.storage}) : super(key: key);
final CounterStorage storage;
@override
State<StatefulWidget> createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
final appTitle = 'Testing applicatin';
void _update(BuildContext context) async {
await Future.delayed(Duration(milliseconds: 5000));
setState(() {
if(_isDialogShowing){
_isDialogShowing = false;
Navigator.pop(context);
//Navigator.of(context).pop();
}
});
}
@override
Widget build(BuildContext context) {
_update(context);
return new WillPopScope(
onWillPop: null,
child: new MaterialApp(
debugShowCheckedModeBanner: false,
title: appTitle,
home: MyHomePage(title: appTitle),
routes: {
Routes.home: (context) => MyHomePage(),
Routes.settings: (context) => SettingsPage(),
},
),
);
}
}
但是上面的 navigator.pop 方法不会关闭弹出窗口。
谁能帮忙?
最佳答案
您需要在 showDialog() 的构建器中收到的上下文调用 pop,只有这样,由 showDialog() 创建的对话框才会弹出。
将您的 showDialog() 替换为以下内容,它将为您工作:
showDialog(
context: context,
builder: (BuildContext context) {
Future.delayed(Duration(seconds: 5)).then((_) {
Navigator.pop(context);
});
return otherTap(idx:index);
},
);
关于android - Navigator.pop 不会在 flutter 中关闭 simpledialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59385404/
对于我的元素,我需要在按下按钮时弹出一个图像。我正在尝试使用 SimpleDialog 插件,您可以在 here 上看到它.我在我的 HTML 中这样做 This shows standard, de
我创建了 SimpleDialog 和许多由数据列表生成的 SimpleDialogOptions ,是否可以检测到该 SimpleDialogOption 的索引?如果不是,我正在尝试在对话框中使用
我在尝试将变量传递到“简单对话框”框时一直在处理一些代码,但遇到了问题。但是,当我在 __init__ 部分中声明变量时,无法从类中的任何其他方法访问该变量。 我创建了一个简化的工作示例,其中我尝试将
我正在使用 simpledialog 库 ( http://dev.jtsage.com/jQM-SimpleDialog/ ) 并包含所有必要的 JS 和 CSS 文件,但是我无法显示弹出窗口。我究
我有这段代码: child: CircleAvatar( radius: 18, backgroundColor: Colors.white70,
在我的 Simpledialog 中将 snackbar 添加到按下方法时,我遇到了下面的错误代码。[使用不包含脚手架的上下文调用的 Scaffold.of()。] 我想就如何提供正确的上下文来解决它
在我的 Simpledialog 中将 snackbar 添加到按下方法时,我遇到了下面的错误代码。[使用不包含脚手架的上下文调用的 Scaffold.of()。] 我想就如何提供正确的上下文来解决它
我试图在点击 FloatingActionButton 后创建一个 SimpleDialog,但是当按下该按钮时没有任何反应。 我做错了什么? import "package:flutter/mate
我想使用以下代码在我的 Flutter 应用中显示一个带有 ListView.builder 的 SimpleDialog: showDialog( context: context, bui
JQuery Mobile simpledialog() 从页面中清除我的动态数据。 实际上我有一个列表,我正在使用 simpledialog 从中删除记录 迅速的。但这将清除我动态生成的列表,因此我
所以我尝试创建一个对话框,要求用户使用 python 的内置 Tkinter 库进行输入(数字)。特别是,我在谷歌上搜索到这可以通过 simpledialog.askinteger 方法轻松实现。 在
我正在使用 Flutter 构建 Android 应用程序。我在以编程方式关闭简单对话框时遇到问题。 现在我有一个名为 ListVessel 的有状态页面。此页面包含数组 otherVessels 中
昨天问了一个关于在 AlertDialog 中显示 GridView 的非常相似的问题,并得到了将 Widget 包装在容器中并增加宽度的完美答案。现在我决定 SimpleDialog 会更好,以提供
我在 Windows 7 上使用 Python 3.3。我有一个 tkinter一个应用Button启动 tkinter.simpledialog.Dialog .像这样(这是一个完整的、可运行的示例
我需要一种方法来在 SimpleDialog 上执行操作时关闭模态底部工作表,我有这样的东西: Widget _getActionsMenu() { return Container(
我正在寻找一种使用 JQMDateBox 选择多个日期的方法,我当前的解决方案有效,但我有一个事件委托(delegate)问题,我似乎无法解决。 申请我有一个输入框id=date,其中实现了日期框。我
在下面的代码中,第一个对话框立即获得焦点,因此用户只需键入答案并按 Enter。在第二个中,在 Windows 中运行时似乎不会发生这种情况。运行 Raspbian 9,两个窗口在打开时都会获得焦点。
我正在尝试使用 tkinter 创建一个简单的文本框。下面是我尝试使用的代码。 import tkinter as tk from tkinter import simpledialog root =
def prompt_new_name(self): new_name = simpledialog.askstring("Name Change", "New name") if n
我是一名优秀的程序员,十分优秀!