Flutter占位图插件flutter_empty_illustration的使用

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

Flutter占位图插件flutter_empty_illustration的使用

空屏幕、无数据发现、无互联网连接屏幕的Flutter插件

本项目是一个Dart包的起点,该包包含可以轻松在多个Flutter或Dart项目中共享的库模块。

对于如何开始使用Flutter的帮助,您可以查看我们的在线文档,其中提供了教程、示例、移动开发指南以及完整的API参考。

flutter_empty_illustration


#### 开始使用

要开始使用`flutter_empty_illustration`插件,请按照以下步骤操作:

1. 在`pubspec.yaml`文件中添加依赖项。
2. 导入所需的包。
3. 使用插件提供的组件。

##### 步骤1: 添加依赖项

在`pubspec.yaml`文件中添加`flutter_empty_illustration`插件的依赖项:

```yaml
dependencies:
  flutter:
    sdk: flutter
  flutter_empty_illustration: ^1.0.0

然后运行flutter pub get来获取新的依赖项。

步骤2: 导入所需的包

在你的Dart文件中导入所需的包:

import 'package:flutter/material.dart';
import 'package:flutter_empty_illustration/flutter_empty_illustration.dart';
import 'package:lottie/lottie.dart';
步骤3: 使用插件提供的组件

下面是一个完整的示例,展示了如何使用flutter_empty_illustration插件来创建一个简单的Flutter应用,其中包括无网络连接和无数据发现的界面。

import 'package:flutter/material.dart';
import 'package:flutter_empty_illustration/flutter_empty_illustration.dart';
import 'package:lottie/lottie.dart';

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

class MyApp extends StatelessWidget {
  // 这个小部件是您的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // 这是您的应用的主题。
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Empty Illustration Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, this.title}) : super(key: key);

  // 这个小部件是您的应用的首页。它是有状态的,意味着它有一个状态对象(定义在下面),该状态对象包含影响其外观的字段。
  // 这个类是状态的配置。它保存了由父级(在这个例子中是App小部件)提供的值(在这里是标题)并用于状态的构建方法。小部件子类中的字段总是标记为“final”。

  final String? title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          // 这里我们从MyHomePage对象中取值,该对象是由App.build方法创建的,并用它来设置我们的appbar标题。
          title: Text(widget.title!),
        ),
        body: ListView(
          physics: PageScrollPhysics(),
          scrollDirection: Axis.horizontal,
          shrinkWrap: true,
          children: [
            NoInternetWidget(), // 无网络连接的占位图
            CustomNoInternetWidget(
              imageWidget: Lottie.asset(
                  'assets/no_internet_connection_wifi.json', // 动画资源文件路径
                  width: 400,
                  fit: BoxFit.cover), // 设置动画大小和填充方式
              textWidget: Text(
                "Internet Disconnected", // 显示的文字信息
                textAlign: TextAlign.center,
                style: TextStyle(
                    fontSize: 22.0,
                    color: Colors.black54,
                    fontWeight: FontWeight.bold), // 文字样式
              ),
            ),
            NoDataFoundWidget() // 无数据发现的占位图
          ],
        )
        // 这个尾随逗号使自动格式化更美观。
        );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用flutter_empty_illustration插件的示例代码。这个插件用于在UI中显示占位图,特别是在数据尚未加载时,提供一个美观的占位提示。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_empty_illustration: ^最新版本号  # 请替换为实际最新版本号

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

接下来,在你的Flutter项目中使用这个插件。以下是一个完整的示例,展示如何在数据加载时显示占位图,数据加载完成后显示实际数据。

import 'package:flutter/material.dart';
import 'package:flutter_empty_illustration/flutter_empty_illustration.dart';
import 'dart:async';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Empty Illustration Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Empty Illustration Example'),
        ),
        body: MyHomePage(),
      ),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  List<String> data = [];
  bool isLoading = true;

  @override
  void initState() {
    super.initState();
    Timer(Duration(seconds: 2), () {
      setState(() {
        data = List.generate(20, (index) => "Item ${index + 1}");
        isLoading = false;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: isLoading
          ? Center(
              child: EmptyIllustration(
                title: 'Loading Data',
                subTitle: 'Please wait...',
                image: EmptyIllustrationImage.loading,
              ),
            )
          : ListView.builder(
              itemCount: data.length,
              itemBuilder: (context, index) {
                return ListTile(
                  title: Text(data[index]),
                );
              }),
    );
  }
}

在这个示例中:

  1. MyApp类定义了应用的入口。
  2. MyHomePage是一个有状态的组件,它维护了两个状态:data(存储加载的数据)和isLoading(表示数据是否正在加载)。
  3. initState方法中,使用Timer模拟一个异步的数据加载过程。2秒后,数据加载完成,data被填充,isLoading被设置为false
  4. build方法中,根据isLoading的值决定显示占位图还是实际数据列表。
    • 如果isLoadingtrue,显示一个EmptyIllustration组件,带有标题、副标题和加载中的图像。
    • 如果isLoadingfalse,显示一个包含数据的ListView

这个示例展示了如何使用flutter_empty_illustration插件来在数据加载期间提供一个美观的占位提示,并在数据加载完成后显示实际内容。

回到顶部