showMenu(
context: context,
position: RelativeRect.fromLTRB(5000, appBar.preferredSize.height + statusBarHeight!, 0.0, 0.0),
items: [
PopupMenuItem(
child: Text('Cancel'),
value: 0,
onTap: () {
cancelDialog();
},
),
],
);
Run Code Online (Sandbox Code Playgroud)
cancelDialog() {
return () {
showDialog(
context: context,
builder: (BuildContext context) => OrderCancel(order!.orderId!),
);
};
}
Run Code Online (Sandbox Code Playgroud)
使用以前的代码无法打开cancelDialog 。但它可以通过单击另一个按钮正确打开
我目前正在使用showGeneralDialog来呈现一个如下所示的对话框弹出窗口:
这一切都很好,但它发生在根Navigator级别,我宁愿将所有视图作为Go Router路由,以便我可以在整个应用程序中以相同的方式控制它们的呈现。
我如何showGeneralDialog在调用路线时使用类似的功能?
GoRoute(
path: '/settings',
pageBuilder: (context, state) {
return ???;
},
),
Run Code Online (Sandbox Code Playgroud) 我有一个对话框,我将其包装在 blocbuilder 中以根据状态类型更新它,但该对话框只是第一次构建,在状态更改后它不会重建。
showDialog(
context: context,
builder: (_) {
BlocBuilder<ExampleCubit, ExampleState>(
bloc: cubit,
builder: (context, state) {
return CustomDialog(
title:"title",
onSave: (File file) {
cubit.uploadImage(file);
},
progress: (state is ExtendedExampleState)? state.progress:0,
onDelete: () {},
onCancel: () {
cubit.cancelUploading();
},
);
},
);
Run Code Online (Sandbox Code Playgroud)
注意:使用 Bloc 模式很重要StateFulBuilder。
我想在处理或离开屏幕之前显示警报对话框,或者最晚显示警告 SnackBar,我该怎么做?
我知道如何显示对话框和 SnackBar,但我不知道我在哪里做,或者我什么时候尝试在处理生活钩子时这样做,但它出错了。由于上下文在显示对话框之前被处理。
我试图使用 firebase 云评估,在此过程中,我想在推送通知到达时向用户显示一个弹出对话框。但为了显示对话,我们需要上下文对象作为showDialogis的参数之一BuildContext。
我尝试了很多方法,但没有成功。截至目前,我的代码如下所示:
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
print('onMessage: $message');
return;
},
onBackgroundMessage: myBackgroundMessageHandler,
onResume: (Map<String, dynamic> message) {
print('onResume: $message');
return;
},
onLaunch: (Map<String, dynamic> message) {
print('onLaunch: $message');
Text('onLaunch: $message'),
);
return;
});
Run Code Online (Sandbox Code Playgroud)
注意:此代码是在单独的类中编写的,我试图在没有任何第三部分库的情况下实现它。
我一直在从事一个项目,该项目要求我根据移动设备的orientation.
例如,在portrait方向的情况下,我需要显示一个小部件(比如说纵向小部件),在方向的情况下landscape,我需要显示另一个小部件(我们称之为横向小部件)。
我用过OrientationBuilder
实际问题:在方向更改时,所有Dialogs和/OptionMenu或任何其他 Popup 类型的 Widget 都不会关闭。如何在方向改变时关闭它们?
重现问题的步骤:
OptionMenu左上角的Popuped部件仍然可见。注意:请注意,我需要针对此问题的全局解决方案。仅专门围绕此代码提供解决方案对我来说没有任何用处。这是我为了更好地理解问题而提供的示例代码,我根本不使用此代码。
示例应用程序代码:
// main.dart
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return OrientationBuilder(builder: (context, orientation) {
bool isLandscape = …Run Code Online (Sandbox Code Playgroud) 我有以下函数来显示对话框,我使用媒体查询将其设置为 100%,但是当它运行时,我仍然看到对话框周围有白色边距。
如何存档全屏对话框?
Future<void> showLoadingDialog(BuildContext context, GlobalKey key) async {
Widget myDialog = SimpleDialog(
key: key,
backgroundColor: Colors.black54,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
CircularProgressIndicator(),
SizedBox(height: 10,),
Text("Please Wait....",style: TextStyle(color: accentColor),)
]),
)
]);
return showDialog<void>(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return myDialog;
});
}
Run Code Online (Sandbox Code Playgroud)