Flutter便捷组件插件easy_widgets的使用
Flutter便捷组件插件easy_widgets的使用
简化并快速访问最常用的widget
,同时方便访问扩展和功能/助手,这些功能/助手具有响应式特性。
特性
功能 | 描述 |
---|---|
响应式 | 每个easy widget都是响应式的。其他数值可以通过使用.hWise 或.wWise 扩展来实现响应式。 |
简化的小部件 | 简化的小部件可以更快更轻松地配置,例如EasyContainer 、EasyScrollList 等。 |
多次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
更多关于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
的官方文档。