Flutter便捷组件插件easy_widgets的使用

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

Flutter便捷组件插件easy_widgets的使用

简化并快速访问最常用的widget,同时方便访问扩展和功能/助手,这些功能/助手具有响应式特性。

特性

功能 描述
响应式 每个easy widget都是响应式的。其他数值可以通过使用.hWise.wWise扩展来实现响应式。
简化的小部件 简化的小部件可以更快更轻松地配置,例如EasyContainerEasyScrollList等。
多次push/pushNamed 可以一次性推送多个页面,并带有动画,常用于深度链接或应用链接。
页面过渡 容易实现带有多种动画的页面过渡。
简单的混合支持 提供了多个常用函数的简化访问,如在执行未来时显示加载指示器、snackbars、对话框等。
简单的扩展 多种扩展使代码更快,这些扩展有助于响应式设计。扩展适用于列表、上下文、数字、小部件等。

安装

flutter pub add easy_widgets

或者在pubspec.yaml文件中添加依赖:

dependencies:
  easy_widgets: ^0.0.4

导入

你只需要一个导入语句:

import 'package:easy_widget/easy_widget.dart';

初始化(必须)

为了实现响应式功能,你需要首先初始化easy widget。

方法一

如果您的应用程序尺寸不会改变(如Android或iOS),则可以在main.dart文件中的build函数内初始化easy widget,如下所示:

import 'package:easy_widget/easy_widget.dart';

/*
.
其余的代码
.
*/

@override
Widget build(BuildContext context) {
  EasyWidget.initiate(context,
      designHeight: 720, // 设计高度(可选)
      designWidth: 360, // 设计宽度(可选)
  ); // 必须在此处初始化easy widget。

  return YOURWIDGET(
    /*
    .
    你的代码
    .
    */
  );
}

方法二

如果您的应用程序尺寸会改变(如Web),则应该通过easy mixin来初始化easy widget。

import 'package:easy_widget/easy_widget.dart';

/*
.
其余的代码
.
*/

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with EasyMixin { // 必须将State类与EasyMixin一起扩展
/*
.
其余的代码
.
*/
}

// 如果你愿意传递设计尺寸,可以在init中这样设置:
@override
void initState() {
  setDesignDimension(360, 720); // 设置你的设计宽度和高度
  super.initState();
}

响应式

每个easy widget都是响应式的。其他数值可以通过使用.hWise.wWise扩展来实现响应式。

例如:

Container(
  height: 200.hWise, // 高度将根据屏幕的高度进行调整,
  width: 200.wWise, // 宽度将根据屏幕的宽度进行调整,
);

你也可以在文本、按钮、填充等中使用相同的属性。

例如:

Text(
  'Lorem ispum',
  style: TextStyle(
    fontSize: 14.hWise, // 文本将根据屏幕的高度进行调整,
  ),
);

简化的小部件

有几个简化的小部件可以更快更轻松地配置。每个小部件都有详细的文档,帮助你理解如何使用它们。

可用的小部件有:

  • EasyContainer() // 可用作按钮,添加溅水效果、动画等。
  • EasyScrollList() // 轻松创建列表,带有分页、可选滚动、分隔符等。
  • EasyGesture() // 轻松处理复杂的手势,如滑动。
  • EasyInkTap() // 处理墨水点击,轻松添加波纹效果。
  • EasyPadding() // 为你的小部件提供易于定制的填充。

多次push/pushNamed

你可以一次性推送多个页面,并带有动画,常用于深度链接或应用链接。

import 'package:easy_widget/easy_widget.dart';

/*
.
其余的代码
.
*/

void pushMultiplePages(){
  context.pushAll(
    [Page1(), Page2(), Page3()],
    transitionType: EasyTransitionType.rightToLeft, // 定义过渡类型/动画
  );
}

要一次推送多个命名路由,可以使用pushNamed方法。同时,你需要在generateRoute函数中返回EasyPageTransition

例如:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Easy Widgets 示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(
        title: "多次pushNamed",
      ),
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/first':
            return EasyPageTransition(
              child: Scaffold(
                appBar: AppBar(
                  title: Text('First'),
                ),
              ),
              type: EasyTransitionType.bottomToTop,
              settings: settings,
            );
          case '/second':
            return EasyPageTransition(
              child: Scaffold(
                appBar: AppBar(
                  title: Text('Second'),
                ),
              ),
              type: EasyTransitionType.bottomToTop,
              settings: settings,
            );
          default:
            return EasyPageTransition(
              child: Scaffold(
                appBar: AppBar(
                  title: Text('404'),
                ),
                body: Text('未找到路由').alignC,
              ),
              type: EasyTransitionType.bottomToTop,
              settings: settings,
            );
        }
      },
    );
  }
}

现在你可以简单地使用context.pushNamedAll函数来一次推送多个命名路由。确保参数列表的长度等于路由名称的长度,或者根本不传递参数。

void pushNamedAll(){
  context
        .pushNamedAll(routeNames: ['/first', '/second'], arguments: [{}, {}]);
}

页面过渡

使用EasyPageTransition类轻松处理页面过渡动画。

例如:

context.push(
  HomePage(),
  transitionType: EasyTransitionType.rightToLeft, // 定义过渡类型/动画
);

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

1 回复

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


当然,easy_widgets 是一个旨在简化 Flutter 开发过程的组件库,它提供了一系列便捷的预构建组件,使得开发者能够快速构建美观且功能强大的用户界面。下面我将通过一些代码示例来展示 easy_widgets 的使用方法。

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

dependencies:
  flutter:
    sdk: flutter
  easy_widgets: ^最新版本号  # 请替换为当前最新版本号

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

示例 1:使用 EasyAlert 显示弹窗

EasyAlert 是一个便捷的弹窗组件,可以快速显示信息、警告或错误提示。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Easy Widgets Demo')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              EasyAlert.show(
                context: context,
                title: '提示',
                content: '这是一个简单的弹窗提示',
                type: EasyAlertType.info,
              );
            },
            child: Text('显示弹窗'),
          ),
        ),
      ),
    );
  }
}

示例 2:使用 EasyLoading 显示加载指示器

EasyLoading 提供了一个简单的全局加载指示器,可以在整个应用中轻松调用。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Easy Loading Demo')),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              // 显示加载指示器
              EasyLoading.show(status: '加载中...');
              
              // 模拟一个异步操作
              await Future.delayed(Duration(seconds: 2));
              
              // 隐藏加载指示器
              EasyLoading.dismiss();
            },
            child: Text('显示加载'),
          ),
        ),
      ),
    );
  }
}

示例 3:使用 EasyRefresh 实现下拉刷新和上拉加载

EasyRefresh 是一个功能强大的刷新组件,支持多种刷新样式和加载更多功能。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Easy Refresh Demo')),
        body: EasyRefresh(
          onRefresh: () async {
            // 模拟刷新操作
            await Future.delayed(Duration(seconds: 2));
            return true; // 返回 true 表示刷新成功
          },
          onLoad: () async {
            // 模拟加载更多操作
            await Future.delayed(Duration(seconds: 2));
            return false; // 返回 false 表示没有更多数据
          },
          child: ListView.builder(
            itemCount: 20,
            itemBuilder: (context, index) {
              return ListTile(title: Text('Item $index'));
            },
          ),
        ),
      ),
    );
  }
}

这些示例展示了如何使用 easy_widgets 中的几个主要组件来简化 Flutter 开发过程。你可以根据具体需求进一步自定义这些组件的行为和样式。更多详细信息和高级用法,请参考 easy_widgets 的官方文档。

回到顶部