Flutter动画效果插件flutter_ume_animenzzz的使用
Flutter动画效果插件flutter_ume_animenzzz的使用
UME是一个用于Flutter应用的内置调试工具包平台。
快速开始
所有以flutter_ume_kit_
开头的包都是UME的功能插件,用户可以根据需求访问它们。
-
编辑
pubspec.yaml
文件并添加依赖项。从版本
1.0.0
开始,flutter_ume开始适配Flutter 3。dev_dependencies: flutter_ume: ^1.0.1 flutter_ume_kit_ui: ^1.0.0 flutter_ume_kit_device: ^1.0.0 flutter_ume_kit_perf: ^1.0.0 flutter_ume_kit_show_code: ^1.0.0 flutter_ume_kit_console: ^1.0.0 flutter_ume_kit_dio: ^1.0.0
↓ 零安全版本,兼容Flutter 2.x
dev_dependencies: # 不要在发布模式下使用UME flutter_ume: ^0.3.0+1 flutter_ume_kit_ui: ^0.3.0+1 flutter_ume_kit_device: ^0.3.0 flutter_ume_kit_perf: ^0.3.0 flutter_ume_kit_show_code: ^0.3.0 flutter_ume_kit_console: ^0.3.0 flutter_ume_kit_dio: ^0.3.0
↓ 非零安全版本,兼容Flutter 1.x
dev_dependencies: # 不要在发布模式下使用UME flutter_ume: ^0.1.1 flutter_ume_kit_ui: ^0.1.1 flutter_ume_kit_device: ^0.1.1 flutter_ume_kit_perf: ^0.1.1 flutter_ume_kit_show_code: ^0.1.1 flutter_ume_kit_console: ^0.1.1
-
运行
flutter pub get
。 -
导入包:
import 'package:flutter_ume_animenzzz/flutter_ume.dart'; // UME框架 import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart'; // UI套件 import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart'; // 性能套件 import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart'; // 显示代码 import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart'; // 设备信息 import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart'; // 显示调试打印 import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart'; // Dio检查器
-
编辑主方法,注册插件套件并初始化UME:
void main() { if (kDebugMode) { PluginManager.instance // 注册插件套件 ..register(WidgetInfoInspector()) ..register(WidgetDetailInspector()) ..register(ColorSucker()) ..register(AlignRuler()) ..register(ColorPicker()) // 新功能 ..register(TouchIndicator()) // 新功能 ..register(Performance()) ..register(ShowCode()) ..register(MemoryInfoPage()) ..register(CpuInfoPage()) ..register(DeviceInfoPanel()) ..register(Console()) ..register(DioInspector(dio: dio)); // 传入你的Dio实例 // 在flutter_ume 0.3.0之后 runApp(UMEWidget(child: MyApp(), enable: true)); // 在flutter_ume 0.3.0之前 runApp(injectUMEWidget(child: MyApp(), enable: true)); } else { runApp(MyApp()); } }
-
使用
flutter run
运行,或者使用flutter build apk --debug
或flutter build ios --debug
构建生产环境。
重要事项
从版本0.1.1
/0.2.1
开始,我们不再需要设置useRootNavigator: false
。
功能特性
当前开源版本的UME包含13个插件套件。
开发UME插件套件
UME插件位于./kits
目录中,每个插件都是一个package
。你可以参考./custom_plugin_example
中的示例。
-
运行
flutter create -t package custom_plugin
创建自定义插件套件,它可以是package
或plugin
。 -
编辑自定义插件套件的
pubspec.yaml
文件以添加UME框架依赖:dependencies: flutter_ume: '>=0.3.0 <0.4.0'
-
创建插件套件类,并实现
Pluggable
接口:import 'package:flutter_ume_animenzzz/flutter_ume.dart'; class CustomPlugin implements Pluggable { CustomPlugin({Key key}); [@override](/user/override) Widget buildWidget(BuildContext context) => Container( color: Colors.white, width: 100, height: 100, child: Center( child: Text('Custom Plugin') ), ); // 插件套件面板 [@override](/user/override) String get name => 'CustomPlugin'; // 插件套件名称 [@override](/user/override) String get displayName => 'CustomPlugin'; [@override](/user/override) void onTrigger() {} // 点击插件套件图标时调用 [@override](/user/override) ImageProvider<Object> get iconImageProvider => NetworkImage('url'); // 插件套件图标 }
-
在项目中使用自定义插件套件:
-
编辑宿主应用项目的
pubspec.yaml
文件以添加custom_plugin
依赖:dev_dependencies: custom_plugin: path: path/to/custom_plugin
-
运行
flutter pub get
。 -
导入包:
import 'package:custom_plugin/custom_plugin.dart';
-
编辑主方法,注册自定义插件套件:
if (kDebugMode) { PluginManager.instance ..register(CustomPlugin()); runApp( UMEWidget( child: MyApp(), enable: true ) ); } else { runApp(MyApp()); }
-
-
运行你的应用。
示例代码
import 'package:dio/dio.dart';
import 'package:example/custom_router_pluggable.dart';
import 'package:example/detail_page.dart';
import 'package:example/home_page.dart';
import 'package:example/ume_switch.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_ume_animenzzz/flutter_ume.dart';
import 'package:flutter_ume_kit_ui/flutter_ume_kit_ui.dart';
import 'package:flutter_ume_kit_perf/flutter_ume_kit_perf.dart';
import 'package:flutter_ume_kit_show_code/flutter_ume_kit_show_code.dart';
import 'package:flutter_ume_kit_device/flutter_ume_kit_device.dart';
import 'package:flutter_ume_kit_console/flutter_ume_kit_console.dart';
import 'package:provider/provider.dart';
import 'package:flutter_ume_kit_dio/flutter_ume_kit_dio.dart';
import 'package:flutter_ume_kit_channel_monitor/flutter_ume_kit_channel_monitor.dart';
final Dio dio = Dio()..options = BaseOptions(connectTimeout: 10000);
final navigatorKey = GlobalKey<NavigatorState>();
void main() => runApp(const UMEApp());
class UMEApp extends StatefulWidget {
const UMEApp({Key? key}) : super(key: key);
[@override](/user/override)
State<UMEApp> createState() => _UMEAppState();
}
class _UMEAppState extends State<UMEApp> {
[@override](/user/override)
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
CustomRouterPluggable().navKey = navigatorKey;
});
if (kDebugMode) {
PluginManager.instance
..register(WidgetInfoInspector())
..register(WidgetDetailInspector())
..register(ColorSucker())
..register(AlignRuler())
..register(ColorPicker())
..register(TouchIndicator())
..register(Performance())
..register(ShowCode())
..register(MemoryInfoPage())
..register(CpuInfoPage())
..register(DeviceInfoPanel())
..register(Console())
..register(DioInspector(dio: dio))
..register(CustomRouterPluggable())
..register(ChannelPlugin());
}
}
Widget _buildApp(BuildContext context) {
return MaterialApp(
navigatorKey: navigatorKey,
title: 'UME Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: HomePage(title: 'UME Demo Home Page'),
onGenerateRoute: (settings) {
switch (settings.name) {
case 'detail':
return MaterialPageRoute(builder: (_) => const DetailPage());
default:
return null;
}
},
);
}
[@override](/user/override)
Widget build(BuildContext context) {
final Widget body = _buildApp(context);
if (kDebugMode) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => UMESwitch()),
],
builder: (BuildContext context, _) => UMEWidget(
enable: context.watch<UMESwitch>().enable,
child: body,
),
);
}
return body;
}
}
更多关于Flutter动画效果插件flutter_ume_animenzzz的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动画效果插件flutter_ume_animenzzz的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_ume_animenzzz
是一个 Flutter 动画效果插件,它提供了多种预定义的动画效果,帮助开发者快速实现复杂的动画效果。以下是如何使用 flutter_ume_animenzzz
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_ume_animenzzz
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_ume_animenzzz: ^0.1.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入插件:
import 'package:flutter_ume_animenzzz/flutter_ume_animenzzz.dart';
3. 使用动画效果
flutter_ume_animenzzz
提供了多种动画效果,你可以直接在 Widget 中使用它们。以下是一些常见的使用示例:
3.1 基本动画
class MyAnimatedWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Animatezzz(
duration: Duration(seconds: 2),
effect: Effects.fadeIn, // 使用淡入效果
child: Container(
width: 100,
height: 100,
color: Colors.blue,
),
);
}
}
3.2 组合动画
你可以将多个动画效果组合在一起使用:
class MyAnimatedWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Animatezzz(
duration: Duration(seconds: 2),
effects: [Effects.fadeIn, Effects.slideInRight], // 组合淡入和从右侧滑入效果
child: Container(
width: 100,
height: 100,
color: Colors.blue,
),
);
}
}
3.3 自定义动画参数
你可以通过传递参数来自定义动画效果:
class MyAnimatedWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Animatezzz(
duration: Duration(seconds: 2),
effects: [
Effects.fadeIn(delay: Duration(milliseconds: 500)), // 延迟500毫秒开始淡入
Effects.slideInRight(offset: 100.0), // 从右侧滑入100像素
],
child: Container(
width: 100,
height: 100,
color: Colors.blue,
),
);
}
}
4. 支持的动画效果
flutter_ume_animenzzz
支持多种动画效果,包括但不限于:
Effects.fadeIn
:淡入效果Effects.fadeOut
:淡出效果Effects.slideInLeft
:从左侧滑入Effects.slideInRight
:从右侧滑入Effects.slideInTop
:从顶部滑入Effects.slideInBottom
:从底部滑入Effects.scaleIn
:缩放进入Effects.rotateIn
:旋转进入
5. 完整示例
以下是一个完整的示例,展示如何使用 flutter_ume_animenzzz
插件:
import 'package:flutter/material.dart';
import 'package:flutter_ume_animenzzz/flutter_ume_animenzzz.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter UME Animenzzz Example'),
),
body: Center(
child: MyAnimatedWidget(),
),
),
);
}
}
class MyAnimatedWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Animatezzz(
duration: Duration(seconds: 2),
effects: [
Effects.fadeIn(delay: Duration(milliseconds: 500)),
Effects.slideInRight(offset: 100.0),
],
child: Container(
width: 100,
height: 100,
color: Colors.blue,
),
);
}
}