在iOS 11中引入的大型标题样式,通常用于iOS应用。在Flutter中实现这种通用效果应该相对容易。然而,目前实现它们需要对slivers有一定的了解,这可能是一些开发者觉得有点高级的主题。我们应该看看是否可以提供一种更简单的 Package 小部件,使这种效果更易于接近。
这是开发人员目前必须编写的代码以获得所需的效果:
class SliverNavBarExample extends StatelessWidget {
const SliverNavBarExample({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: CustomScrollView(
slivers: <Widget>[
const CupertinoSliverNavigationBar(
largeTitle: Text('Contacts'),
trailing: Icon(CupertinoIcons.add_circled),
),
SliverList.builder(
itemCount: 5,
itemBuilder: (BuildContext context, int index) {
return CupertinoListSection(
header: Text(['S1', 'S2', 'S3', 'S4', 'S5'][index % 5]),
children: const [
Text('C1'),
Text('C2'),
Text('C3'),
Text('C4'),
Text('C5'),
],
);
},
),
],
),
);
}
}
还应注意的是,具有CupertinoPageScaffold
属性的CupertinoPageScaffold.navigationBar
会导致开发人员走错路。以这种方式设置导航栏将不会给您带来大型标题样式。
不相关的:CupertinoListSection
可以通过允许懒构建子项(参见#119558)来提高效率。
3条答案
按热度按时间lyr7nygr1#
cc @mit-mit
tez616oj2#
It seems you weren't the first for the second point :)
See #119558
u3r8eeie3#
我同意这个观点。据我所知,Flutter不再支持iOS版本低于11的系统,因此能够直接实现标题功能是我们应用显得可信的重要要求。