Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套

简介: Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套在 Flutter 中,ListView 和 PageView 是两个常用的控件,它们可以用于滑动展示大量内容的场景,且支持各种嵌套方式,本文将介绍其中的一些花式嵌套方式。

Flutter 小技巧之 ListView 和 PageView 的各种花式嵌套

在 Flutter 中,ListView 和 PageView 是两个常用的控件,它们可以用于滑动展示大量内容的场景,且支持各种嵌套方式,本文将介绍其中的一些花式嵌套方式。

ListView 嵌套 ListView

在某些场景下,我们需要在 ListView 中展示另一个 ListView,比如在一个订单列表中,每个订单又包含了多个商品。此时我们可以在每个订单条目中再嵌入一个 ListView 来展示商品列表。

ListView.builder(
  itemCount: orders.length,
  itemBuilder: (context, index) {
    return Column(
      children: [
        // 订单条目
        ListTile(
          // ...
        ),
        // 商品列表
        ListView.builder(
          shrinkWrap: true,
          physics: NeverScrollableScrollPhysics(),
          itemCount: orders[index].items.length,
          itemBuilder: (context, i) {
            return ListTile(
              // ...
            );
          },
        ),
      ],
    );
  },
)

在嵌套 ListView 时,需要注意内层 ListView 的 shrinkWrap 属性必须为 true,physics 属性必须为 NeverScrollableScrollPhysics。

ListView 嵌套 PageView

在某些场景下,我们需要在 ListView 中展示一个 PageView,比如在一个带有轮播图的新闻列表中,每个新闻条目下方都有一个图片轮播。

ListView.builder(
  itemCount: newsList.length,
  itemBuilder: (context, index) {
    return Column(
      children: [
        // 新闻条目
        ListTile(
          // ...
        ),
        // 图片轮播
        SizedBox(
          height: 200,
          child: PageView.builder(
            itemCount: newsList[index].images.length,
            itemBuilder: (context, i) {
              return Image.network(
                newsList[index].images[i],
                fit: BoxFit.cover,
              );
            },
          ),
        ),
      ],
    );
  },
)

在嵌套 ListView 和 PageView 时,需要注意内层的 PageView 需要指定高度,并且不要使用 NeverScrollableScrollPhysics,否则可能会导致图片无法滑动。

PageView 嵌套 ListView

在某些场景下,我们需要在 PageView 中展示多个 ListView,比如在一个带有分类切换的商品列表中,每个分类下都有一个商品列表。

PageView.builder(
  controller: _pageController,
  itemCount: categories.length,
  itemBuilder: (context, index) {
    return ListView.builder(
      itemCount: products[index].length,
      itemBuilder: (context, i) {
        return ListTile(
          // ...
        );
      },
    );
  },
)

在嵌套 PageView 和 ListView 时,需要注意内层 ListView 需要指定高度,并且不要使用 NeverScrollableScrollPhysics,否则可能会导致页面无法滑动。

总结

ListView 和 PageView 是两个非常强大的控件,它们的嵌套方式也非常灵活,可以满足各种场景下的需求。但是在嵌套时需要注意一些细节,以免出现问题。希望本文能对大家有所帮助。

相关文章
Flutter ListView懒加载(滑动不加载,停止滑动加载)
前言:为了更好的减小网络的带宽,使得列表更加流畅,我们需要了解懒加载,也称延迟加载。关于上一章的登录界面,各位属实难为我了,我也在求ui小姐姐,各位点点赞给我点动力吧~
Flutter ScrollView嵌套ListView滑动冲突
Flutter ScrollView嵌套ListView滑动冲突
1288 0
|
3月前
|
UED
Flutter之ListView实现自动滑动到底部
Flutter之ListView实现自动滑动到底部
207 1
|
6月前
|
Dart 安全
简化代码、提高效率:Dart和Flutter开发小技巧
在日常开发中,我们常常会使用一些常用的技巧或语法糖,以简化代码、提高开发效率。本文将分享一些在Dart和Flutter中常用的小贴士,帮助你更轻松地编写优雅高效的代码。
简化代码、提高效率:Dart和Flutter开发小技巧
|
4月前
|
Android开发
Flutter路由跳转参数处理小技巧
Flutter路由跳转参数处理小技巧
41 0
|
4月前
Flutter生命周期方法小技巧
Flutter生命周期方法小技巧
27 0
|
4月前
flutter- Row Column Expanded ListView
flutter- Row Column Expanded ListView
|
4月前
Flutter 列表学习(listview,gridview,ExpansionTile,ScrollController,RefreshIndicator)
Flutter 列表学习(listview,gridview,ExpansionTile,ScrollController,RefreshIndicator)
|
6月前
Flutter.源码分析.flutter/packages/flutter/lib/src/widgets/scroll_view.dart/ListView
Flutter.源码分析.flutter/packages/flutter/lib/src/widgets/scroll_view.dart/ListView
59 0
|
安全 开发工具 git
Flutter:实战小技巧
本文主要介绍在 Flutter 开发中的一些实用技巧。
210 0
Flutter:实战小技巧