阿里妹导读: 随着 Flutter 这一框架的快速发展, 有越来越多的业务开始使用 Flutter 来重构或新建其产品. 但在我们的实践过程中发现, 一方面 Flutter 开发效率高, 性能优异, 跨平台表现好, 另一方面 Flutter 也面临着插件, 基础能力, 底层框架缺失或者不完善等问题. 今天, 闲鱼团队的正物带我们解决一个问题: 如何解决 AOP for Flutter?
问题背景
我们在实现一个自动化录制回放的过程中发现, 需要去修改 Flutter 框架 ( Dart 层面) 的代码才能够满足要求, 这就会有了对框架的侵入性. 要解决这种侵入性的问题, 更好地减少迭代过程中的维护成本, 我们考虑的首要方案即面向切面编程.
那么如何解决 AOP for Flutter 这个问题呢? 本文将重点介绍一个闲鱼技术团队开发的针对 Dart 的 AOP 编程框架 AspectD.
开源地址
- aop.dart
- import 'package:example/main.dart' as App;
- import 'aop_impl.dart';
- void main()=> App.main();
- aop_impl.dart
- import 'package:aspectd/aspectd.dart';
- @Aspect()
- @pragma("vm:entry-point")
- class ExecuteDemo{
- @pragma("vm:entry-point")
- ExecuteDemo();
- @Execute("package:example/main.dart", "_MyHomePageState", "-_incrementCounter")
- @pragma("vm:entry-point")
- void _incrementCounter(PointCut pointcut) {
- pointcut.proceed();
- print('KWLM called!');
- }
- }
来源: http://www.tuicool.com/articles/yaqIFzi