@@ -111,21 +111,45 @@ class Inject {
111111 return success;
112112 }
113113
114- //全局catch拦截
114+ //非类中的方法拦截
115115 @pragma ('vm:entry-point' )
116- @pragma ("aopd:trycatch" )
116+ @pragma ("aopd:inject" , {
117+ "importUri" : "package:example/main.dart" ,
118+ "clsName" : "DialogExt" ,
119+ "methodName" : "-DialogExt|showNotice" ,
120+ "isRegex" : false
121+ })
117122 //必须是static,不然不起作用
118- static void injectTrycatch (
119- Object exception,
120- StackTrace ? stackTrace,
121- ) async {
122- FlutterError .dumpErrorToConsole (
123- FlutterErrorDetails (exception: exception, stack: stackTrace),
124- forceReport: true );
123+ static Future <bool > _injectShowNotice (
124+ Object target,
125+ String functionName,
126+ List <dynamic > positionalParams,
127+ Map <String , dynamic > namedParams,
128+ Function proceed) async {
125129 debugPrint (
126- "[Inject] trycatch result success ${exception .runtimeType .toString ()} ${stackTrace ?.runtimeType .toString ()}" );
130+ "[Inject] $functionName start ${namedParams ["title" ]} ${namedParams ["message" ]}" );
131+ bool success = await Function .apply (
132+ proceed, positionalParams, _transToNamedParams (namedParams));
133+ debugPrint ("[Inject] $functionName result $success " );
134+ return success;
127135 }
128136
137+ // //全局catch拦截
138+ // @pragma('vm:entry-point')
139+ // @pragma("aopd:trycatch")
140+ // //必须是static,不然不起作用
141+ // static void injectTrycatch(
142+ // String? functionName,
143+ // Object exception,
144+ // StackTrace? stackTrace,
145+ // ) async {
146+ // var info = {
147+ // "message":
148+ // "程序运行错误: $functionName | ${exception.toString()},详情: ${stackTrace?.toString()}",
149+ // };
150+ // debugPrint(info["message"].toString());
151+ // }
152+
129153 //Extension里方法拦截
130154 @pragma ('vm:entry-point' )
131155 @pragma ("aopd:inject" , {
@@ -190,6 +214,130 @@ class Inject {
190214 Function .apply (proceed, positionalParams, _transToNamedParams (namedParams));
191215 }
192216
217+ @pragma ('vm:entry-point' )
218+ @pragma ("aopd:inject" , {
219+ "importUri" : "package:example/main.dart" ,
220+ "clsName" : "MixinHomePageState2" ,
221+ "methodName" : "-_test7" ,
222+ "isRegex" : false
223+ })
224+ //必须是static,不然不起作用
225+ static void _injectTest7 (
226+ Object target,
227+ String functionName,
228+ List <dynamic > positionalParams,
229+ Map <String , dynamic > namedParams,
230+ Function proceed) async {
231+ debugPrint (
232+ "[Inject] $functionName start ${positionalParams [0 ]} ${positionalParams [1 ]} ${namedParams ["key3" ]}" );
233+ Function .apply (proceed, positionalParams, _transToNamedParams (namedParams));
234+ }
235+
236+ @pragma ('vm:entry-point' )
237+ @pragma ("aopd:inject" , {
238+ "importUri" : "package:example/main.dart" ,
239+ "clsName" : "RepositoryImpl" ,
240+ "methodName" : "-getAppVersion" ,
241+ "isRegex" : false
242+ })
243+ //必须是static,不然不起作用
244+ static Future <int > _injectGetAppVersion (
245+ Object target,
246+ String functionName,
247+ List <dynamic > positionalParams,
248+ Map <String , dynamic > namedParams,
249+ Function proceed) async {
250+ debugPrint ("[Inject] $functionName start: ${namedParams ["packageName" ]}" );
251+ int result = await Function .apply (
252+ proceed, positionalParams, _transToNamedParams (namedParams));
253+ debugPrint ("[Inject] $functionName result: $result " );
254+ return result;
255+ }
256+
257+ @pragma ('vm:entry-point' )
258+ @pragma ("aopd:inject" , {
259+ "importUri" : "package:example/main.dart" ,
260+ "clsName" : "BaseRepository" ,
261+ "methodName" : "-getAppVersion2" ,
262+ "isRegex" : false
263+ })
264+ //必须是static,不然不起作用
265+ static Future <int > _injectGetAppVersion2 (
266+ Object target,
267+ String functionName,
268+ List <dynamic > positionalParams,
269+ Map <String , dynamic > namedParams,
270+ Function proceed) async {
271+ debugPrint ("[Inject] $functionName start: ${namedParams ["packageName" ]}" );
272+ int result = await Function .apply (
273+ proceed, positionalParams, _transToNamedParams (namedParams));
274+ debugPrint ("[Inject] $functionName result: $result " );
275+ return result;
276+ }
277+
278+ @pragma ('vm:entry-point' )
279+ @pragma ("aopd:inject" , {
280+ "importUri" : "package:example/main.dart" ,
281+ "clsName" : "RepositoryImpl" ,
282+ "methodName" : "-getAppVersion2" ,
283+ "isRegex" : false
284+ })
285+ //必须是static,不然不起作用
286+ static Future <int > _injectGetAppVersion22 (
287+ Object target,
288+ String functionName,
289+ List <dynamic > positionalParams,
290+ Map <String , dynamic > namedParams,
291+ Function proceed) async {
292+ debugPrint (
293+ "[Inject] _injectGetAppVersion22 start: ${namedParams ["packageName" ]}" );
294+ int result = await Function .apply (
295+ proceed, positionalParams, _transToNamedParams (namedParams));
296+ debugPrint ("[Inject] _injectGetAppVersion22 result: $result " );
297+ return result;
298+ }
299+
300+ @pragma ('vm:entry-point' )
301+ @pragma ("aopd:inject" , {
302+ "importUri" : "package:example/test_mixin.dart" ,
303+ "clsName" : r"_?&BaseController.*&MixinBaseController" ,
304+ "methodName" : "-testMixin" ,
305+ "isRegex" : true
306+ })
307+ //必须是static,不然不起作用
308+ static dynamic testMixin (
309+ Object target,
310+ String functionName,
311+ List <dynamic > positionalParams,
312+ Map <String , dynamic > namedParams,
313+ Function proceed) async {
314+ debugPrint ("[Inject] testMixin start: ${namedParams ["packageName" ]}" );
315+
316+ return Function .apply (
317+ proceed, positionalParams, _transToNamedParams (namedParams));
318+ }
319+
320+ @pragma ('vm:entry-point' )
321+ @pragma ("aopd:inject" , {
322+ "importUri" : "package:example/test_mixin.dart" ,
323+ "clsName" : "BaseControllerImpl" ,
324+ "methodName" : "-baseTest" ,
325+ "isRegex" : false
326+ })
327+ //必须是static,不然不起作用
328+ static dynamic baseTest (
329+ Object target,
330+ String functionName,
331+ List <dynamic > positionalParams,
332+ Map <String , dynamic > namedParams,
333+ Function proceed) async {
334+ debugPrint (
335+ "[Inject] baseTest start: ${target .runtimeType .toString ()} $functionName " );
336+
337+ return Function .apply (
338+ proceed, positionalParams, _transToNamedParams (namedParams));
339+ }
340+
193341 @pragma ('vm:entry-point' )
194342 static Map <Symbol , dynamic > _transToNamedParams (
195343 Map <String , dynamic > namedParams) {
0 commit comments