> showDialog<T>({requiredBuildContext context,// 表示对话框所处的上下文,通常来自当前 widget。requiredWidgetBuilder builder,// 用于构建对话框内容的函数。它传递一个 BuildContext 并返回一个 Widget,这通常是对话框的主体。boolbarrierDismissible =true,// 指示用户点击屏幕背景(对话框外部)时是否关闭对话框。
上面的例子中showDialog的builder函数返回内容都使用的是AlertDialog类,它属于Material设计风格的,而在我们平时开发的时候往往需要根据设计稿定制自己的Dialog,这个时候就需要自定义Dialog的内容了,如直接在builder函数中返回自定义的widget类,但是这个时候需要自己处理圆角、边框和阴影,还有处理点击对话框外部自动关闭对话框等功...
在Dialog A中再弹出一个Dialog B ,获得B中的值 去修改A界面上数据 图1 如图:点击图片中日期 ,弹出选择日期组件 图2 点击确定按钮 图1 中的日期,通过 setState((){dateStr='${date.year}/${date.month}/${date.day}';}); 修改是失败的,正确姿势: showDialog(context:context,builder:(BuildContext con...
当您调用pop(context, {value})方法时,您也可以返回一个值,因此pop中的值将从对话框中返回。
// 按 name 方式跳转页面,并接收返回值 // Navigator.pushNamed(context, 'homeRoute').then((Object result) { // showDialog( // context: context, // builder: (BuildContext context) { // String str = result.toString(); // return new AlertDialog( ...
//dialog显示返回值 _showDialog(context, value); }) pop回上一个页面 1 Navigator.of(context).pop('这个是要返回给上一个页面的数据'); 动态路由的使用 当需要向下一个页面传递参数时,要用到所谓的动态路由,自己生成页面对象,所以可以传递自己想要的参数。
在上面的示例中,我们已经在_showAlertDialog函数中处理了对话框关闭后的逻辑。通过检查showDialog函数的返回值,我们可以知道用户是点击了哪个按钮关闭了对话框,并据此执行相应的逻辑。 综上所述,通过以上步骤,你可以在Flutter中创建一个简单的弹出提示框,并根据需要处理用户交互的结果。
在showDialog时使用我们封装的工具类LocalNavigator作为父节点,对具体子页面节点进行包裹。 那么子页面内的堆栈操作(push 、pop、)都会在我们的 LocalNavigator 堆栈中响应。 /// 通过局部导航开启一个弹窗staticFuture<T?>showLocalDialog<T>(BuildContext context,Widget child,){returnshowDialog<T?>(context:context...
在Flutter中,我们会使用到这些方法,例如[showDialog()], [showMenu()], and [showModalBottomSheet()]等,这些方法其实本质上是创建了一个路由的页面后,并调用Navigator的push方法去push到当前的屏幕上。 showDialog()其实是调用了showGeneralDialog(),所以下面贴了showGeneralDialog的源码,可以看出,也是利用了Navigator...