Flutter可滚动列表插件scrollable_list的使用

Flutter可滚动列表插件scrollable_list的使用

特性

  • 有效的滚动,并且带有活动标签指示。

开始使用

  • 安装此包以在底部栏中滚动主内容。

安装

  • 添加依赖项:
dependencies:
  scrollable_list: ^0.0.2+1
  • 导入包:
import 'package:scrollable_list/scrollable_list.dart';

如何使用

  • 创建底部菜单列表,包含标题、图标和唯一ID。
  • 创建页面内容列表,包含标题、内容和唯一ID。
  • 使用CommonList结构创建列表。
  • 必须为相关的菜单和页面控件使用相同的唯一ID以便于滚动。

截图

首页 搜索页 个人资料页 设置页

示例

class ScrollablePage extends StatelessWidget {
  final String title;
  ScrollablePage({Key? key, this.title = ""}) : super(key: key);

  // 这里我们有用于页面主体的CommonList列表
  // 每个common list都有标签、内容、图标和主要部件
  final list = <CommonList>[
    CommonList(uniqueID: 1, content: "首页", label: "首页", mainWidget: const Content()),
    CommonList(uniqueID: 2, content: "搜索页", label: "搜索", mainWidget: const Content()),
    CommonList(uniqueID: 3, content: "个人资料页", label: "个人资料", mainWidget: const Content()),
    CommonList(uniqueID: 4, content: "设置页", label: "设置", mainWidget: const Content()),
  ];

  // 这里我们有用于底部的CommonList列表
  // 可以为每个对象添加图像元素
  final bottomList = [
    CommonList(uniqueID: 1, content: "", label: "首页", image: "assets/images/home.png", icon: Icons.home),
    CommonList(uniqueID: 2, content: "", label: "搜索", icon: Icons.search_rounded, image: "assets/images/search.png"),
    CommonList(uniqueID: 3, content: "", label: "个人资料", height: 23, image: "assets/images/user.png", icon: Icons.person),
    CommonList(uniqueID: 4, content: "", label: "设置", image: "assets/images/settings.png", icon: Icons.settings),
  ];

  final ScrollController controller = ScrollController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 这里我们需要将主体内容和底部内容传递给页面
    return SafeArea(
      child: ScrollableWidget(
        scrollController: controller,
        bodyContent: list,
        bottomContent: bottomList,
        appbar: CustomAppbar(title: title),
        selectedColor: Colors.blue,
        unSelectedColor: Colors.black38,
      ),
    );
  }
}

更多关于Flutter可滚动列表插件scrollable_list的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter可滚动列表插件scrollable_list的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,ScrollableList 并不是一个内置的组件,但你可以使用 ListViewCustomScrollView 来实现可滚动列表的功能。ListView 是最常用的可滚动列表组件,它提供了多种构造函数来满足不同的需求。

以下是一些常见的 ListView 使用示例:

1. 使用 ListView.builder 构建动态列表

ListView.builder 适用于需要动态生成大量列表项的场景。它只会构建当前可见的列表项,从而提高了性能。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('ListView.builder Example')),
        body: ListView.builder(
          itemCount: 100, // 列表项的数量
          itemBuilder: (context, index) {
            return ListTile(
              title: Text('Item $index'),
            );
          },
        ),
      ),
    );
  }
}

2. 使用 ListView.separated 构建带分隔符的列表

ListView.separated 允许你在列表项之间添加分隔符。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('ListView.separated Example')),
        body: ListView.separated(
          itemCount: 100,
          separatorBuilder: (context, index) => Divider(), // 分隔符
          itemBuilder: (context, index) {
            return ListTile(
              title: Text('Item $index'),
            );
          },
        ),
      ),
    );
  }
}

3. 使用 ListView.custom 构建自定义列表

ListView.custom 允许你使用 SliverChildDelegate 来完全自定义列表项的构建方式。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('ListView.custom Example')),
        body: ListView.custom(
          childrenDelegate: SliverChildBuilderDelegate(
            (context, index) {
              return ListTile(
                title: Text('Item $index'),
              );
            },
            childCount: 100,
          ),
        ),
      ),
    );
  }
}

4. 使用 CustomScrollView 构建复杂的滚动视图

CustomScrollView 允许你将多个可滚动的小部件(如 SliverListSliverGrid 等)组合在一起。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('CustomScrollView Example')),
        body: CustomScrollView(
          slivers: <Widget>[
            SliverAppBar(
              expandedHeight: 200.0,
              flexibleSpace: FlexibleSpaceBar(
                title: Text('SliverAppBar'),
                background: Image.network(
                  'https://picsum.photos/200/300',
                  fit: BoxFit.cover,
                ),
              ),
            ),
            SliverList(
              delegate: SliverChildBuilderDelegate(
                (context, index) {
                  return ListTile(
                    title: Text('Item $index'),
                  );
                },
                childCount: 100,
              ),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部