flutter 简化iOS 11样式大标题的使用

i86rm4rw  于 4个月前  发布在  Flutter
关注(0)|答案(3)|浏览(52)

在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)来提高效率。

tez616oj

tez616oj2#

It seems you weren't the first for the second point :)
See #119558

u3r8eeie

u3r8eeie3#

我同意这个观点。据我所知,Flutter不再支持iOS版本低于11的系统,因此能够直接实现标题功能是我们应用显得可信的重要要求。

相关问题