Flutter 自定义滚动与动态列表

亚历山大

有一个关于 flutter 的问题 CustomScrollView

我现在拥有的是:

@override
Widget build(BuildContext context) {
  return Container(
    child: CustomScrollView(
      shrinkWrap: true,
      slivers: <Widget>[
        SliverPadding(
          padding: EdgeInsets.all(0),
          sliver: SliverList(
            delegate: SliverChildListDelegate(
              <Widget>[
                Card(),
                Card(),
                Container(
                  child: ListView.builder(
                    physics: const NeverScrollableScrollPhysics(),
                  ),
                )
              ],
            ),
          ),
        ),
      ],
    ),
  );
}

*代码被简化,因为它是一个例子。

正如你可以看到有2Cards()ContainerListView内部。两张卡片都有固定的高度,带有列表的容器有动态高度。现在是如何工作的:随着 ListView 长大,我们可以滚动到列表的底部。所以通常两个Card小部件都变得不可见,因为List的元素占据了整个屏幕。

这个想法是强制第二个Card()固定在屏幕顶部。所以基本上它应该在它自己的位置,但是随着越来越多的滚动,它应该被固定在屏幕顶部,而我越来越多地滚动列表。问题是我怎么能做这样的事情?

谢谢!

解说员

你可以使用SliverPersistentHeader,我为你准备了这个样本:

      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: SafeArea(
            child: CustomScrollView(
              slivers: <Widget>[
                SliverPadding(
                  padding: EdgeInsets.all(0),
                  sliver: SliverList(
                      delegate: SliverChildBuilderDelegate(
                    (context, index) {
                      return ListTile(
                        title: Text("index: $index"),
                      );
                    },
                    childCount: 3,
                  )),
                ),
                SliverPersistentHeader(
                  pinned: true,
                  delegate: PersistentHeader("Card 1"),
                ),
                SliverPersistentHeader(
                  pinned: true,
                  delegate: PersistentHeader("Card 2"),
                ),
                SliverPadding(
                  padding: EdgeInsets.all(0),
                  sliver: SliverList(
                      delegate: SliverChildBuilderDelegate((context, index) {
                    return ListTile(
                      title: Text("index: $index"),
                    );
                  })),
                ),
              ],
            ),
          ),
        );
      }
    }

    class PersistentHeader extends SliverPersistentHeaderDelegate {
      final String title;

      PersistentHeader(this.title);

      @override
      Widget build(
          BuildContext context, double shrinkOffset, bool overlapsContent) {
        return Container(
          color: Colors.white,
          child: Card(
            color: Colors.white,
            elevation: 7.0,
            child: SizedBox(height: 100.0, child: Center(child: Text(title))),
          ),
        );
      }

      @override
      double get maxExtent => 100.0;

      @override
      double get minExtent => 100.0;

      @override
      bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate) {
        return false;
      }
    }

更多信息:https : //docs.flutter.io/flutter/widgets/SliverPersistentHeader-class.html

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Flutter中创建自定义列表?

来自分类Dev

具有自定义列表的IndexOf(Flutter-Dart)

来自分类Dev

如何在Flutter中实现自定义应用栏布局可滚动效果

来自分类常见问题

Flutter重用自定义小部件

来自分类Dev

Flutter自定义字体未应用

来自分类Dev

Flutter中的自定义按钮

来自分类Dev

Flutter如何绘制自定义渐变

来自分类Dev

Flutter中的自定义BottomNavigationBar

来自分类Dev

在Flutter中自定义DateRangePicker

来自分类Dev

Flutter重用自定义小部件

来自分类Dev

Flutter:使用自定义 ErrorWidget

来自分类Dev

Flutter 自定义导航栏

来自分类Dev

如何在Flutter中使用自定义数据类型下拉列表按钮?

来自分类Dev

Flutter-如何在Firebase动态链接中为应用程序邀请功能传递自定义参数?

来自分类Dev

Flutter:-有没有办法自定义列表构建器中每个扩展图块的输出?

来自分类Dev

Flutter自定义动画图标

来自分类Dev

Flutter-自定义切换按钮选择

来自分类Dev

从Flutter设置Firebase身份验证的自定义声明

来自分类Dev

在Flutter中在ThemeData中添加自定义颜色的位置

来自分类Dev

如何在Flutter中创建自定义日历

来自分类Dev

带有自定义对象的Flutter ReorderableListView

来自分类Dev

如何在Flutter中设置自定义FontWeight值

来自分类Dev

Flutter-自定义按钮上的InkResponse

来自分类Dev

Flutter-如何制作自定义TabBar

来自分类Dev

Flutter自定义窗口小部件无法显示

来自分类Dev

如何在Flutter中制作自定义按钮形状

来自分类Dev

具有页面视图的自定义导航栏[Flutter]

来自分类Dev

Flutter将自定义堆叠对象转换为json

来自分类Dev

在Flutter Cloud Firestore中设置自定义文档ID

Related 相关文章

热门标签

归档