我有以下widget tree:
@override
Widget build(BuildContext context) {
final double topMargin = Platform.isAndroid ? 0 : 105; // TODO: (why margin on iOS?)
final double interMargin = Platform.isAndroid ? 0 : 10;
final body = Column(children: <Widget> [
Padding(
padding: EdgeInsets.only(left: 10, right: 10, top: topMargin),
child: Platform.isAndroid // url
? TextField(
decoration: new InputDecoration(hintText: 'Host'),
maxLines: 1,
autofocus: true,
textInputAction: TextInputAction.next,
controller: _hostController)
: CupertinoTextField(
maxLines: 1,
autofocus: true,
textInputAction: TextInputAction.next,
controller: _hostController)),
Padding(
padding: EdgeInsets.only(left: 10, top: interMargin, right: 10),
child: Platform.isAndroid // port
? TextField(
decoration: new InputDecoration(hintText: 'Port'),
keyboardType: TextInputType.number,
maxLines: 1,
controller: _portController)
: CupertinoTextField(
keyboardType: TextInputType.number,
maxLines: 1,
controller: _portController)),
Platform.isAndroid
? RaisedButton(child: Text('OK'), onPressed: () => _onInputFinished())
: CupertinoButton(child: Text('OK'), onPressed: () => _onInputFinished())
]);
return Platform.isAndroid
? Scaffold(
appBar: AppBar(title: Text('Server connection')),
body: body)
: CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(middle: Text('Server connection')),
child: body);
}
字符串
只有在我将顶部边距添加到主体部件时,它看起来才可以:
final double topMargin = Platform.isAndroid ? 0 : 105; // TODO: (why margin on iOS?)
...
型
的数据
如果我不添加它,CupertinoNavigationBar
会与子节点重叠:
的
我错过了什么?
下面是整个项目和the screen。
3条答案
按热度按时间hwamh0ep1#
你只需要在你孩子的小部件上实现“安全区域”小部件(而不是顶部边距),以避免被库比蒂诺导航栏覆盖。
字符串
2vuwiymt2#
你必须为
CupertinoApp
设置barBackgroundColor
。或者为CupertinoNavigationBar
设置backgroundColor
也可以解决这个问题。字符串
或
型
2nc8po8w3#
使用SafeArea将删除CupertinoNavigationBar的半透明效果,使用媒体查询的填充:
字符串