Dart 安全区域在颤振持续底板中不工作
我使用MaterialApp和脚手架+安全区域作为屏幕。在我尝试使用持久的底部工作表之前,一切都很好。底页内容在系统控件下方显示,例如在iPhone X中 我试图用另一个SafeArea元素来包装底部的内容,但没有用Dart 安全区域在颤振持续底板中不工作,dart,flutter,Dart,Flutter,我使用MaterialApp和脚手架+安全区域作为屏幕。在我尝试使用持久的底部工作表之前,一切都很好。底页内容在系统控件下方显示,例如在iPhone X中 我试图用另一个SafeArea元素来包装底部的内容,但没有用 有没有一种方法可以在底部工作时获得与SafeArea相同的功能?如果是,那怎么办 我试用了这段简单的代码,它在iPhone X的iOS模拟器中正常工作: import 'package:flutter/material.dart'; void main() => runAp
有没有一种方法可以在底部工作时获得与SafeArea相同的功能?如果是,那怎么办 我试用了这段简单的代码,它在iPhone X的iOS模拟器中正常工作:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new SafeArea(
child: new Scaffold(
appBar: new AppBar(
title: new Text('SafeArea demo'),
),
body: new Center(
child: new TapMe(),
),
),
));
}
}
class TapMe extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new RaisedButton(
child: new Text('Tap Me'),
onPressed: () => Scaffold
.of(context)
.showBottomSheet((context) => new Text('I\'ve been tapped')),
);
}
}
您使用的是哪个版本的颤振?只需将showModalBottomSheet的根小部件设置为安全区域小部件即可
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context) {
return SafeArea(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[...
showModalBottomSheet(
上下文:上下文,
生成器:(BuildContext上下文){
返回安全区(
子:列(
mainAxisSize:mainAxisSize.min,
儿童:[…]。。。
我也遇到了这个问题。当我将代码从
showModalBottomSheet
更改为\u scaffoldKey.currentState.showBottomSheet
mySafeArea
停止工作时
您可以通过以下步骤解决此问题:
GlobalKey\u scaffoldKey=GlobalKey();
密钥:\u scaffoldKey,
padding:EdgeInsets.only(底部:MediaQuery.of(\u scaffoldKey.currentState.context).viewPadding.bottom)
在我的例子中,最安全的区域是问题所在,一个实际的解决方法是使用AppBar()将填充设置为AppBar的高度。preferredSize.height
Padding(
padding: EdgeInsets.fromLTRB(0,AppBar().preferredSize.height,0,0),
child: Text(
'Your Order',
style: headingMediumBlack,
),
),
您可以发布一段代码来重现错误吗?只需尝试使用showBottomSheet创建任何持久的底部表单,并在iPhone X上运行它。您要求人们做大量工作来开始帮助您解决问题。您应该创建一个最小的、完整的、可验证的示例,按照此处的指导原则创建底部表单是一个简单的过程工作范围?关于如何重复这一点的说明很清楚。如果您无法帮助,那么为什么要发表评论?也许最好在github上提交一个问题,并附上代码和屏幕截图。我想它应该在开箱即用的情况下使用SafeArea。我想如果您将脚手架本身放在SafeArea中,它会工作。但它正确吗?它确实不正确。工具栏变成black和底部区域也是。你是对的。我可以尝试修改代码,但我不确定你所说的iPhone X上的系统控件下面显示的是什么意思。你能给出一个屏幕截图来显示你的意思吗?仅仅
SafeArea
是不够的。一定要同时为SafeArea
设置top:false
,否则底部将得到顶部填充正在运行。仅通过忽略top
我才能获得此答案屏幕截图上的结果。在颤振1.22.4上检查。P.S.编辑答案以将top
添加到代码片段中,但它只有在同行审查后才会出现。