Flutter渐变列表动画插件flutter_faded_list的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter渐变列表动画插件flutter_faded_list的使用

本插件帮助你以模糊图像作为第一项展示你的小部件列表。

安装

要使用此插件,在 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_faded_list: ^0.0.4

或者使用以下命令自动安装:

$ flutter pub add flutter_faded_list

简单使用

首先,导入插件:

import 'package:flutter_faded_list/flutter_faded_list.dart';

然后在你的代码中使用 FadedHorizontalList 小部件:

FadedHorizontalList(
  blankSpaceWidth: 200, // 设置空白空间的宽度
  bodyColor: const Color(0xffAD4516), // 设置背景颜色
  imageWidget: Image.network("https://i.picsum.photos/id/478/536/354.jpg?hmac=adxYyHX8WcCfHkk07quT2s92fbC7vY2QttaeBztwxgI"), // 设置背景图像
  children: [
    for (var i = 0; i < 10; ++i)
      const Padding(
        padding: const EdgeInsets.all(70.0),
        child: Text("  Hello World!  "), // 设置列表项内容
      ),
  ],
)

示例代码

以下是完整的示例代码,演示如何在 Flutter 应用程序中使用 flutter_faded_list 插件:

import 'package:flutter/material.dart';
import 'package:flutter_faded_list/flutter_faded_list.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Faded List',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const FirstPage(title: "Flutter Faded List"),
    );
  }
}

class FirstPage extends StatelessWidget {
  const FirstPage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(title)),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.format_textdirection_l_to_r),
        onPressed: () {
          Navigator.pushReplacement(
            context,
            MaterialPageRoute(builder: (context) => SecondPage(title: title)),
          );
        },
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            const Text("TextDirection  LTR"),
            DirectionWidget(
              textDirection: TextDirection.ltr,
              child: FadedHorizontalList(
                blankSpaceWidth: 200, // 设置空白空间的宽度
                bodyColor: const Color(0xffAD4516), // 设置背景颜色
                imageWidget: Image.network(
                    "https://images.unsplash.com/photo-1561336313-0bd5e0b27ec8?ixlib=rb-1.2.1&raw_url=true&q=80&fm=jpg&crop=entropy&cs=tinysrgb&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170"), // 设置背景图像
                children: [
                  for (var i = 0; i < 10; ++i)
                    const FadedSampleItem(hotDrink: HotDrink.coffee) // 设置列表项内容
                ],
              ),
            ),
            DirectionWidget(
              textDirection: TextDirection.ltr,
              child: FadedHorizontalList(
                headerColor: const Color(0xffAD4516), // 设置头部背景颜色
                blankSpaceWidth: 200, // 设置空白空间的宽度
                bodyColor: const Color(0xffd27900), // 设置背景颜色
                borderRadius: 20.0, // 设置圆角半径
                imageWidget: Image.network(
                    "https://images.unsplash.com/photo-1561336313-0bd5e0b27ec8?ixlib=rb-1.2.1&raw_url=true&q=80&fm=jpg&crop=entropy&cs=tinysrgb&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1170"), // 设置背景图像
                headerWidget: const FadedSampleHeaderWidget(
                    hotDrink: HotDrink.coffee, color: Color(0xffAD4516)), // 设置头部内容
                children: [
                  for (var i = 0; i < 10; ++i)
                    const FadedSampleItem(hotDrink: HotDrink.coffee) // 设置列表项内容
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter中使用flutter_faded_list插件来实现渐变列表动画的一个示例代码。flutter_faded_list插件允许你在添加或移除列表项时应用淡入淡出的动画效果。

首先,确保你的pubspec.yaml文件中已经添加了flutter_faded_list依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_faded_list: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,在你的Dart文件中,你可以这样使用FadedList组件:

import 'package:flutter/material.dart';
import 'package:flutter_faded_list/flutter_faded_list.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Faded List Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final List<String> _items = List<String>.generate(10, (i) => "Item $i");

  void _addItem() {
    setState(() {
      _items.add("Item ${_items.length}");
    });
  }

  void _removeItem(int index) {
    setState(() {
      _items.removeAt(index);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Faded List Demo'),
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.add),
            onPressed: _addItem,
            tooltip: 'Add Item',
          ),
        ],
      ),
      body: FadedList<String>(
        itemCount: _items.length,
        itemBuilder: (context, index, animation) {
          return FadeTransition(
            opacity: animation,
            child: ListTile(
              leading: Icon(Icons.label),
              title: Text(_items[index]),
              trailing: IconButton(
                icon: Icon(Icons.delete),
                onPressed: () => _removeItem(index),
              ),
            ),
          );
        },
        keyBuilder: (context, index) => ValueKey<String>(_items[index]),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个简单的Flutter应用,其中包含一个列表和一些操作按钮。
  2. FadedList组件用于渲染列表项,并为每个列表项添加淡入淡出的动画。
  3. itemCount指定了列表项的数量。
  4. itemBuilder函数负责构建每个列表项,并且接收一个animation参数,这个参数可以用于控制淡入淡出的动画效果。
  5. keyBuilder函数为每个列表项生成一个唯一的ValueKey,这对于动画的正确执行是必要的。

运行这个代码,你将看到一个带有淡入淡出动画效果的列表,当你添加或删除列表项时,动画会自动触发。

回到顶部