1+ import 'package:flutter/foundation.dart' ;
2+
13@pragma ("aopd:aspect" )
24@pragma ('vm:entry-point' )
35class Inject {
@@ -8,14 +10,14 @@ class Inject {
810 "methodName" : "-_test1" ,
911 "isRegex" : false
1012 })
11- //必须是static,必然不起作用
13+ //必须是static,不然不起作用
1214 static void _test1 (
1315 Object target,
1416 String functionName,
1517 List <dynamic > positionalParams,
1618 Map <String , dynamic > namedParams,
1719 Function proceed) {
18- print (
20+ debugPrint (
1921 "[Inject] $functionName start ${positionalParams [0 ]} ${positionalParams [1 ]} ${namedParams ["key3" ]}" );
2022 Function .apply (proceed, positionalParams, _transToNamedParams (namedParams));
2123 }
@@ -27,14 +29,14 @@ class Inject {
2729 "methodName" : "-_test2" ,
2830 "isRegex" : false
2931 })
30- //必须是static,必然不起作用
32+ //必须是static,不然不起作用
3133 static Future <bool > _test2 (
3234 Object target,
3335 String functionName,
3436 List <dynamic > positionalParams,
3537 Map <String , dynamic > namedParams,
3638 Function proceed) {
37- print (
39+ debugPrint (
3840 "[Inject] $functionName start ${positionalParams [0 ]} ${positionalParams [1 ]} ${namedParams ["key3" ]}" );
3941 return Function .apply (
4042 proceed, positionalParams, _transToNamedParams (namedParams));
@@ -47,14 +49,14 @@ class Inject {
4749 "methodName" : "+_test3" ,
4850 "isRegex" : false
4951 })
50- //必须是static,必然不起作用
52+ //必须是static,不然不起作用
5153 static Future <bool > _test3 (
5254 Object target,
5355 String functionName,
5456 List <dynamic > positionalParams,
5557 Map <String , dynamic > namedParams,
5658 Function proceed) {
57- print (
59+ debugPrint (
5860 "[Inject] $functionName start ${positionalParams [0 ]} ${positionalParams [1 ]} ${namedParams ["key3" ]}" );
5961 return Function .apply (
6062 proceed, positionalParams, _transToNamedParams (namedParams));
@@ -67,21 +69,64 @@ class Inject {
6769 "methodName" : "+_test4" ,
6870 "isRegex" : false
6971 })
70- //必须是static,必然不起作用
72+ //必须是static,不然不起作用
7173 static Future <bool > _test4 (
7274 Object target,
7375 String functionName,
7476 List <dynamic > positionalParams,
7577 Map <String , dynamic > namedParams,
7678 Function proceed) async {
77- print (
79+ debugPrint (
7880 "[Inject] $functionName start ${positionalParams [0 ]} ${positionalParams [1 ]} ${namedParams ["key3" ]}" );
7981 bool success = await Function .apply (
8082 proceed, positionalParams, _transToNamedParams (namedParams));
81- print ("[Inject] $functionName result ${ success } " );
83+ debugPrint ("[Inject] $functionName result $success " );
8284 return success;
8385 }
8486
87+ @pragma ('vm:entry-point' )
88+ @pragma ("aopd:inject" , {
89+ "importUri" : "package:example/main.dart" ,
90+ "clsName" : "ExtensionHomePageState" ,
91+ "methodName" : "-ExtensionHomePageState|_test5" ,
92+ "isRegex" : false
93+ })
94+ //必须是static,不然不起作用
95+ //这里需要注意Extension的注入和普通方法不同,methodName的写法也与普遍的不同
96+ //Extension中的方法第一个positionalParams[0]所代表的参数是它扩展的实例本身
97+ static Future <bool > _test5 (
98+ Object target,
99+ String functionName,
100+ List <dynamic > positionalParams,
101+ Map <String , dynamic > namedParams,
102+ Function proceed) async {
103+ debugPrint (
104+ "[Inject] $functionName start ${positionalParams [0 ].runtimeType .toString ()} ${positionalParams [1 ]} ${positionalParams [2 ]} ${namedParams ["key3" ]}" );
105+ bool success = await Function .apply (
106+ proceed, positionalParams, _transToNamedParams (namedParams));
107+ debugPrint ("[Inject] $functionName result $success " );
108+ return success;
109+ }
110+
111+ @pragma ('vm:entry-point' )
112+ @pragma ("aopd:inject" , {
113+ "importUri" : "package:example/main.dart" ,
114+ "clsName" : r"__.+MixinHomePageState" ,
115+ "methodName" : "-_test6" ,
116+ "isRegex" : true
117+ })
118+ //必须是static,不然不起作用
119+ static void _test6 (
120+ Object target,
121+ String functionName,
122+ List <dynamic > positionalParams,
123+ Map <String , dynamic > namedParams,
124+ Function proceed) async {
125+ debugPrint (
126+ "[Inject] $functionName start ${positionalParams [0 ]} ${positionalParams [1 ]} ${namedParams ["key3" ]}" );
127+ Function .apply (proceed, positionalParams, _transToNamedParams (namedParams));
128+ }
129+
85130 @pragma ('vm:entry-point' )
86131 static Map <Symbol , dynamic > _transToNamedParams (
87132 Map <String , dynamic > namedParams) {
0 commit comments