Flutter状态展示插件fancy_states的使用

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

Flutter状态展示插件fancy_states的使用

Fancy States简介

Fancy States 是一个用于 Flutter 的状态展示小部件库,它包含了多种可完全自定义的错误状态,并可以根据需求进行扩展。使用该库可以轻松处理各种状态(如网络错误、数据加载失败等),无需额外编写复杂的逻辑。

GitHub Stars
Pub版本


安装

1. 添加依赖到 pubspec.yaml

在项目的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  fancy_states: <最新版本>

2. 安装依赖

通过命令行安装依赖:

$ flutter pub get

3. 导入库

在 Dart 文件中导入 fancy_states

import 'package:fancy_states/fancy_states.dart';

截图

以下是 Fancy States 提供的一些默认状态展示效果:

Fancy States 展示


使用方法

默认类型

使用默认状态(例如 States.internet):

FancyState(
  state: States.internet, // 网络错误状态
),

Internet State

网络错误状态的示例:

FancyState(
  state: States.internet, // 网络错误状态
),

Data State

数据加载失败状态的示例:

FancyState(
  state: States.data, // 数据加载失败状态
),

Search State

搜索结果为空状态的示例:

FancyState(
  state: States.search, // 搜索结果为空状态
),

Server State

服务器错误状态的示例:

FancyState(
  state: States.server, // 服务器错误状态
),

自定义状态

可以通过传入自定义参数来自定义状态展示:

FancyState(
  state: States.internet, // 网络错误状态
  image: "assets/images/no_internet.png", // 自定义图片路径
  title: "无法连接到互联网", // 标题
  description: "请检查您的网络连接并重试。", // 描述
  imageHeight: 100, // 图片高度
  titleStyle: const TextStyle(
    fontFamily: 'Futura',
    fontSize: 16,
    fontWeight: FontWeight.w600,
    color: Colors.black,
  ),
  descriptionStyle: const TextStyle(
    fontFamily: 'Futura',
    fontSize: 12,
    fontWeight: FontWeight.w300,
    color: Color(0xFF8F8E8E),
  ),
)

完整示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中集成和使用 fancy_states

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Fancy States 示例"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 默认网络错误状态
            FancyState(
              state: States.internet,
            ),
            SizedBox(height: 20),
            // 自定义网络错误状态
            FancyState(
              state: States.internet,
              image: "assets/images/no_internet.png",
              title: "无法连接到互联网",
              description: "请检查您的网络连接并重试。",
              imageHeight: 100,
              titleStyle: const TextStyle(
                fontFamily: 'Futura',
                fontSize: 16,
                fontWeight: FontWeight.w600,
                color: Colors.black,
              ),
              descriptionStyle: const TextStyle(
                fontFamily: 'Futura',
                fontSize: 12,
                fontWeight: FontWeight.w300,
                color: Color(0xFF8F8E8E),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter状态展示插件fancy_states的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter状态展示插件fancy_states的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


fancy_states 是一个用于 Flutter 的状态管理插件,它可以帮助开发者更轻松地管理和展示应用的状态。这个插件通常用于在应用中显示加载、成功、错误等不同的状态,并提供了简洁的 API 来处理这些状态。

安装 fancy_states

首先,你需要在 pubspec.yaml 文件中添加 fancy_states 依赖:

dependencies:
  flutter:
    sdk: flutter
  fancy_states: ^1.0.0  # 请使用最新版本

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

基本使用

fancy_states 提供了一个 Stateful 小部件,它可以根据不同的状态显示不同的 UI。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  [@override](/user/override)
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  Future<String> _fetchData() async {
    await Future.delayed(Duration(seconds: 2)); // 模拟网络请求
    // throw Exception("Failed to load data"); // 模拟错误
    return "Data loaded successfully!";
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fancy States Example'),
      ),
      body: Center(
        child: FutureBuilder<String>(
          future: _fetchData(),
          builder: (context, snapshot) {
            return Stateful(
              state: snapshot.connectionState,
              loading: () => CircularProgressIndicator(),
              success: (data) => Text(data),
              error: (error) => Text('Error: $error'),
              empty: () => Text('No data available'),
            );
          },
        ),
      ),
    );
  }
}

解释

  1. Stateful 小部件: Statefulfancy_states 提供的核心小部件,它根据传入的状态显示不同的 UI。

  2. state 参数: state 参数用于指定当前的状态,通常是一个 ConnectionState 或其他自定义状态。

  3. loading 参数: 当状态为 loading 时,显示加载中的 UI。

  4. success 参数: 当状态为 success 时,显示成功的 UI,并传递数据。

  5. error 参数: 当状态为 error 时,显示错误的 UI,并传递错误信息。

  6. empty 参数: 当状态为 empty 时,显示空状态的 UI。

自定义状态

你还可以使用 Stateful 来处理自定义状态。例如:

enum CustomState { loading, success, error, empty }

class CustomStateExample extends StatelessWidget {
  final CustomState state;

  CustomStateExample({required this.state});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Stateful(
      state: state,
      loading: () => CircularProgressIndicator(),
      success: () => Text('Success!'),
      error: () => Text('Error!'),
      empty: () => Text('Empty!'),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!