Flutter自定义UI组件插件fancy_flutter的使用
Fancy Flutter
Fancy 是一个轻量级的状态管理包,用于简化 Flutter 中的控制器管理和依赖注入。受 GetX 等框架的启发,Fancy 提供了一种简洁的方式来管理状态、依赖关系和 UI 更新,而无需过多的样板代码。
功能
- 高效的状态管理:使用
FancyBaseController
来管理你的应用状态,内置支持初始化、清理和监听器管理。 - 依赖注入:通过
Fancy
轻松注册和检索依赖项,实现简单的依赖管理和服务定位。 - 自定义小部件:利用
FancyBuilder
创建响应式 UI 组件,当状态变化时自动重建。 - 继承小部件集成:使用
FancyMaterialApp
提供一致的上下文,以便在整个应用中进行依赖注入。
开始使用
安装
在你的 pubspec.yaml
文件中添加以下内容:
dependencies:
fancy_flutter: 0.0.1 # 或最新版本
使用
步骤
- 定义控制器:通过扩展
FancyBaseController
创建控制器,并实现你的业务逻辑。 - 注册依赖项:使用
Fancy.register
注册服务和控制器。 - 构建小部件:使用
FancyBuilder
创建响应式 UI 组件,当状态变化时自动重建。
示例
以下是使用 Fancy Flutter 的完整示例代码:
import 'package:flutter/material.dart';
import 'package:fancy_flutter/fancy.dart';
// 示例服务
class AuthService {
// AuthService 实现
}
// 示例控制器
class AuthController extends FancyBaseController {
final AuthService _authService = Fancy.get<AuthService>();
String _username = '';
String _password = '';
String get username => _username;
String get password => _password;
void updateUsername(String username) {
_username = username;
fancyUpdate(); // 触发状态更新
}
void updatePassword(String password) {
_password = password;
fancyUpdate(); // 触发状态更新
}
void login() {
// 处理登录逻辑
}
[@override](/user/override)
void onInit() {
super.onInit();
// 初始化认证状态
}
[@override](/user/override)
void onStart() {
super.onStart();
// 启动逻辑
}
[@override](/user/override)
void onDispose() {
super.onDispose();
// 清理逻辑
}
}
import 'package:example/injector.dart';
import 'package:fancy_flutter/fancy_flutter.dart';
import 'package:flutter/material.dart';
import 'auth_controller.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
final injector = AppDependenciesEnjector();
injector.registerDependencies();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return FancyStateInjector(
injector: FancyDependencyInjector(),
child: const MaterialApp(
home: LoginPage(),
),
);
}
}
class LoginPage extends StatelessWidget {
const LoginPage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FancyBuilder<AuthController>(
builder: (controller) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(
onChanged: controller.updateUsername,
),
TextField(
onChanged: controller.updatePassword,
),
ElevatedButton(
onPressed: controller.login,
child: const Text('Login'),
),
// 添加一个 Text 小部件以观察状态变化
Text('Username: ${controller.username}'),
Text('Password: ${controller.password}'),
],
);
},
),
),
);
}
}
更多关于Flutter自定义UI组件插件fancy_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter自定义UI组件插件fancy_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
fancy_flutter
是一个 Flutter 插件,提供了一些自定义的 UI 组件和效果,可以帮助开发者快速构建美观且功能丰富的应用程序。以下是如何使用 fancy_flutter
插件的基本步骤:
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 fancy_flutter
依赖项:
dependencies:
flutter:
sdk: flutter
fancy_flutter: ^latest_version
然后运行 flutter pub get
来安装插件。
2. 导入插件
在你的 Dart 文件中导入 fancy_flutter
插件:
import 'package:fancy_flutter/fancy_flutter.dart';
3. 使用组件
fancy_flutter
提供了多种自定义 UI 组件和效果,以下是一些常见的用法示例:
3.1 自定义按钮
FancyButton(
onPressed: () {
// 按钮点击事件
},
text: 'Click Me',
color: Colors.blue,
textColor: Colors.white,
borderRadius: 10.0,
)
3.2 自定义卡片
FancyCard(
elevation: 5.0,
borderRadius: 10.0,
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Text('This is a fancy card!'),
),
)
3.3 自定义加载指示器
FancyLoader(
size: 50.0,
color: Colors.blue,
)
3.4 自定义对话框
FancyDialog(
title: 'Title',
content: 'This is a fancy dialog.',
onConfirm: () {
// 确认按钮点击事件
},
onCancel: () {
// 取消按钮点击事件
},
)
3.5 自定义动画效果
FancyAnimation(
duration: Duration(seconds: 2),
curve: Curves.easeInOut,
child: Container(
width: 100.0,
height: 100.0,
color: Colors.red,
),
)