Flutter快速切换功能插件quick_change的使用
Flutter快速切换功能插件quick_change的使用
quick_change 🧩
一个轻量级且直观的Flutter状态管理解决方案。
通过简单的类型安全的状态管理和强大的监听及构建能力,可以轻松地管理状态转换。
quick_change
旨在简化Flutter应用中的状态管理,适合小型到中型的应用,并具有扩展到大型应用的灵活性。该包提供了易于使用的状态控制器、内置状态类型和直观的UI监听及构建能力。
特性 ✨
- 简单且轻量级:无需依赖大量库即可管理状态。
- 灵活的状态:使用预定义的状态如
QuickLoading
、QuickData
和QuickError
。 - 简易的监听器:使用干净、直观的监听器API来响应状态变化。
- 模块化设计:适用于模块化和可扩展的Flutter应用。
- 优化性能:仅在必要时重建小部件。
目录 📚
安装
在 pubspec.yaml
中添加 quick_change
:
dependencies:
quick_change: ^1.0.0
然后运行:
flutter pub get
快速开始 🚀
- 定义一个
QuickChangeController
来管理你的状态。 - 使用
QuickChangeBuilder
来监听状态变化并更新UI。 - 使用
.quickListen
在不重建的情况下响应状态变化。
API概览
QuickStateController
:管理状态变化并通知监听器。- 状态:
QuickInitial
:代表初始状态。QuickLoading
:代表加载状态。QuickData<T>
:保存类型为T
的数据。QuickError
:代表带有消息的错误状态。
QuickStateBuilder
:根据控制器的状态构建UI的小部件。.quickListen
:在小部件上扩展,以监听状态变化而不重建。
示例
基本计数器示例
以下是使用 quick_change
创建一个简单的计数器的方法。
import 'package:quick_change/quick_change.dart';
class CounterController extends QuickChangeController<int> {
void incrementCounter(int cVal) {
int val = cVal + 1;
setData(val);
}
void decrementCounter(int cVal) {
int val = cVal - 1;
setData(val);
}
}
import 'package:flutter/material.dart';
import 'package:quick_change/quick_change.dart';
void main() {
GetIt.I.registerLazySingleton<CounterController>(() => CounterController());
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: CounterScreen(),
);
}
}
class CounterScreen extends StatefulWidget {
const CounterScreen({super.key});
@override
CounterScreenState createState() => CounterScreenState();
}
class CounterScreenState extends State<CounterScreen> {
CounterController counterController = GetIt.I<CounterController>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Quick_State Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
QuickChangeBuilder<int>(
controller: counterController,
onLoading: (context) => const CircularProgressIndicator(),
onData: (context, data) =>
Text('Counter: $data', style: const TextStyle(fontSize: 24)),
onError: (context, message) => Text('Error: $message'),
),
ElevatedButton(
onPressed: () {
final currentValue = counterController.currentData ?? 0;
counterController.incrementCounter(currentValue);
},
child: const Text('Increment Counter'),
),
ElevatedButton(
onPressed: () {
final currentValue = counterController.currentData ?? 0;
counterController.decrementCounter(currentValue);
},
child: const Text('Decrement Counter'),
),
ElevatedButton(
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => PostsScreen()));
},
child: const Text('Api Page'),
),
].quickListen<int>(
controller: counterController,
listener: (context, state) {
if (state is QuickData) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Counter: ${state.data}'),
duration: const Duration(milliseconds: 400),
),
);
}
if (state is QuickError) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(state.message)),
);
}
},
),
),
),
);
}
}
监听错误
你可以使用 .quickListen
显示自定义消息(例如 SnackBar
)当错误发生时。
// 监听错误
Widget.quickListen(
controller: counterController,
listener: (state) {
if (state is QuickError) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(state.message)),
);
}
},
);
高级用法
自定义状态类型
通过继承 QuickState
来定义自定义状态。
class QuickCustomSuccess extends QuickState {
final String message;
QuickCustomSuccess(this.message);
}
// 在控制器中使用自定义状态
quickFlux(QuickCustomSuccess("This is custom state"));
更多关于Flutter快速切换功能插件quick_change的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter快速切换功能插件quick_change的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
quick_change
是一个 Flutter 插件,用于在应用中快速切换不同的功能或设置。它可以帮助开发者在调试或测试时快速切换应用的配置、主题、语言等。以下是如何使用 quick_change
插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 quick_change
插件的依赖:
dependencies:
flutter:
sdk: flutter
quick_change: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在需要使用 quick_change
的 Dart 文件中导入插件:
import 'package:quick_change/quick_change.dart';
3. 初始化插件
在 main.dart
文件中初始化 QuickChange
插件。通常,你可以在 runApp
之前初始化它:
void main() {
QuickChange.initialize();
runApp(MyApp());
}
4. 添加可切换的功能
在应用中添加你想要快速切换的功能。例如,你可以添加主题切换、语言切换等功能。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'QuickChange Example',
theme: ThemeData.light(),
darkTheme: ThemeData.dark(),
themeMode: QuickChange.get('themeMode', defaultValue: ThemeMode.system),
home: MyHomePage(),
);
}
}
5. 在 UI 中触发切换
你可以在应用中的某个地方添加一个按钮或手势来触发 QuickChange
的切换功能。例如,你可以添加一个按钮来切换主题:
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('QuickChange Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
QuickChange.set('themeMode', ThemeMode.dark);
},
child: Text('Switch to Dark Theme'),
),
),
);
}
}
6. 使用 QuickChange 进行调试
你可以通过 QuickChange
提供的 API 来动态切换应用中的各种设置。例如,你可以通过以下方式来切换语言:
QuickChange.set('locale', Locale('fr', 'FR'));
7. 持久化设置(可选)
如果你希望在应用重启后仍然保留之前的设置,你可以使用 QuickChange
的持久化功能:
QuickChange.initialize(persist: true);
8. 自定义 QuickChange 界面(可选)
QuickChange
提供了一个默认的切换界面,你可以通过以下方式来显示它:
QuickChange.showQuickChangePanel(context);
你也可以自定义 QuickChange
的界面,通过传递自定义的 Widget
来实现。
9. 监听设置变化(可选)
你可以监听 QuickChange
的设置变化,以便在设置发生变化时执行某些操作:
QuickChange.listen('themeMode', (value) {
print('Theme mode changed to: $value');
});