Flutter 如何在颤振中创建这种类型的对话框?
我想创建一个对话框,如下图所示。当显示对话框按钮仍然可点击时,按钮从第一个屏幕开始 我的成绩Flutter 如何在颤振中创建这种类型的对话框?,flutter,dialog,Flutter,Dialog,我想创建一个对话框,如下图所示。当显示对话框按钮仍然可点击时,按钮从第一个屏幕开始 我的成绩 有关底部工作表的更多信息,请查看 类MyHomePage扩展StatefulWidget{ MyHomePage({Key,this.title}):超级(Key:Key); 最后的字符串标题; @凌驾 _MyHomePageState createState()=>\u MyHomePageState(); } 类_MyHomePageState扩展状态{ @凌驾 小部件构建(构建上下文){ 返回脚
有关底部工作表的更多信息,请查看
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:升起按钮(
已按下:(){
_设置ModalBottomSheet();
},
子项:文本(“显示底页”),
),
),
);
}
void _settingModalBottomSheet(){
showModalBottomSheet(
上下文:上下文,
生成器:(BuildContext bc){
返回容器(
孩子:包裹(
儿童:[
列表砖(
前导:图标(图标、音乐、音符),
标题:文本(“音乐”),
onTap:()=>{}),
列表砖(
前导:图标(Icons.videocam),
标题:文本(“视频”),
onTap:()=>{},
),
],
),
);
},
);
}
}
您可以通过3
方式获得此信息(第一种2
方式将根据需要隐藏付款部分)
`案例1-使用全局密钥
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(MaterialApp(
home: BottomWidget(),
));
}
class BottomWidget extends StatelessWidget {
final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey<ScaffoldState>();
void showOrdersModel(BuildContext context) {
scaffoldKey.currentState.showBottomSheet((context) {
return Container(
height: 250, // change height as required
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
blurRadius: 10,
color: Colors.grey[300],
spreadRadius: 5,
),
],
borderRadius: BorderRadius.only(
topLeft: Radius.circular(12),
topRight: Radius.circular(12),
),
),
child: Center(child: Text('Orders')),
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: scaffoldKey,
body: Center(
child: RaisedButton(
onPressed: () => showOrdersModel(context), // pass context to work
child: Text('Show my orders'),
),
),
);
}
}
情况3-使用颤振中的showModalBottomSheet
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(MaterialApp(
home: BottomWidget(),
));
}
class BottomWidget extends StatelessWidget {
void showOrdersModel(BuildContext context) {
showModalBottomSheet(
context: context,
shape: RoundedRectangleBorder( // apply this to get the rounder corners
borderRadius: BorderRadius.vertical(
top: Radius.circular(20),
),
),
clipBehavior: Clip.antiAliasWithSaveLayer,
builder: (ctx) {
return Container(
height: 250, // change height as required
color: Colors.transparent,
child: Center(child: Text('Orders')),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () => showOrdersModel(context), // pass context to work
child: Text('Show my orders'),
),
),
);
}
}
您的答案在这里,请检查一下这个@SSVernekar对话框将覆盖我的按钮付款。当打开showModalBottomSheet时。也许你不明白我的目的。我需要按钮在底部的位置,然后打开对话框与该按钮没有覆盖我的按钮。但当我移动按钮点击底部时,对话框打开它的覆盖我的按钮。你对此有什么想法吗?对不起,我不能附加我的代码,因为它太长了。你可以尝试将按钮放在底部,然后单击打开对话框,你会看到。
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(MaterialApp(
home: BottomWidget(),
));
}
class BottomWidget extends StatefulWidget {
@override
_BottomWidgetState createState() => _BottomWidgetState();
}
class _BottomWidgetState extends State<BottomWidget> {
void showOrdersModel(BuildContext context) {
Scaffold.of(context).showBottomSheet((context) {
return Container(
height: 250, // change height as required
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
blurRadius: 10,
color: Colors.grey[300],
spreadRadius: 5,
),
],
borderRadius: BorderRadius.only(
topLeft: Radius.circular(12),
topRight: Radius.circular(12),
),
),
child: Center(child: Text('Orders')),
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(
builder: (ctx) => Center(
child: RaisedButton(
onPressed: () => showOrdersModel(ctx), // pass context to work
child: Text('Show my orders'),
),
),
),
);
}
}
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(MaterialApp(
home: BottomWidget(),
));
}
class BottomWidget extends StatelessWidget {
void showOrdersModel(BuildContext context) {
showModalBottomSheet(
context: context,
shape: RoundedRectangleBorder( // apply this to get the rounder corners
borderRadius: BorderRadius.vertical(
top: Radius.circular(20),
),
),
clipBehavior: Clip.antiAliasWithSaveLayer,
builder: (ctx) {
return Container(
height: 250, // change height as required
color: Colors.transparent,
child: Center(child: Text('Orders')),
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () => showOrdersModel(context), // pass context to work
child: Text('Show my orders'),
),
),
);
}
}