我正在尝试使用SliverAppBar。在电话设备上的布局很好。但是,当我使用iPad测试布局时,AppBar的高度似乎没有变化,并且无法正确显示标题文本。
当我整理AppBar时:
我也尝试将bottom属性添加到SliverAppBar,但是它也不起作用。
bottom: PreferredSize(
preferredSize: Size.fromHeight(60.0),
child: Text(''),
),
结果看起来像这样:
标题文本仍被限制为不可见的高度。
我的代码:
new SliverAppBar(
expandedHeight: Adapt.px(220.0),
floating: false,
elevation: 0.0,
pinned: true,
primary: true,
centerTitle: true,
title: Text("TITLE",
style: TextStyle(
color: Colors.white,
fontSize: Adapt.px(45.0),
fontFamily: "pinfon",
fontWeight: FontWeight.w900,
letterSpacing: 1.0)),
backgroundColor: Colors.black45,
brightness: Brightness.dark,
bottom: PreferredSize(
preferredSize: Size.fromHeight(60.0),
child: Text(''),
),
flexibleSpace: new FlexibleSpaceBar(
background: Opacity(
opacity: 0.5,
child: new Stack(
fit: StackFit.expand,
children: <Widget>[
new Image.asset(
"assets/images/back.jpg",
fit: BoxFit.fitWidth,
),
],
),
),
),
),
答案 0 :(得分:1)
我已经测试了您提供的示例代码,并且在使用 iPad Air - 第 4 代 - 14.0 模拟器时布局似乎工作正常。
不过,我看不到你的完整代码。我刚刚重用了您提供的最少代码并创建了一个完整的示例,以便能够查看输出。
这是我的示例代码:
import 'package:flutter/material.dart';
void main() => runApp(SilverAppBarExample());
class SilverAppBarExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: CustomScrollView(
slivers: <Widget>[
new SliverAppBar(
expandedHeight: 220.0,
floating: false,
elevation: 0.0,
pinned: true,
primary: true,
centerTitle: true,
title: Text("TITLE",
style: TextStyle(
color: Colors.white,
fontSize: 45.0,
fontFamily: "pinfon",
fontWeight: FontWeight.w900,
letterSpacing: 1.0)),
backgroundColor: Colors.black45,
brightness: Brightness.dark,
bottom: PreferredSize(
preferredSize: Size.fromHeight(60.0),
child: Text(''),
),
flexibleSpace: new FlexibleSpaceBar(
background: Opacity(
opacity: 0.5,
child: new Stack(
fit: StackFit.expand,
children: <Widget>[
new Image.asset(
"assets/background.jpg",
fit: BoxFit.fitWidth,
),
],
),
),
),
),
new SliverList(
delegate: new SliverChildListDelegate(_buildList(50))),
],
),
),
);
}
List _buildList(int count) {
List<Widget> listItems = List();
for (int i = 0; i < count; i++) {
listItems.add(new Padding(
padding: new EdgeInsets.all(20.0),
child: new Text('Item ${i.toString()}',
style: new TextStyle(fontSize: 25.0))));
}
return listItems;
}
}
使用 iPad Air - 第 4 代 - 14.0 模拟器输出
看来 SliverAppBar
工作正常。
我还在 iPhone 模拟器中对其进行了测试以进行验证。
iPhone SE - 第 2 代 - 14.0
也许如果您能提供您创建的完整代码,我们就可以在最后进行检查。