getArgumentFormMap<T> static method
Implementation
static T? getArgumentFormMap<T>(BuildContext context, String key) {
// 如果使用 Go Router,从 queryParameters 获取参数
if (instance.enableGoRouter) {
final GoRouterState? state = GoRouterState.of(context);
if (state != null) {
if (state.extra is Map) {
Map<String, Object?> argMap = state.extra as Map<String, Object?>;
return argMap[key] as T?;
} else if (state.uri.queryParameters.containsKey(key)) {
String value = state.uri.queryParameters[key]!;
// 根据类型转换
if (T == String) {
return value as T;
} else if (T == int) {
return int.tryParse(value) as T?;
} else if (T == bool) {
return (value.toLowerCase() == 'true') as T;
}
return value as T?;
}
}
return null;
}
// 传统 Navigator 的参数获取方式
var argument = ModalRoute.of(context)!.settings.arguments;
if (argument == null || argument is! Map) {
return null;
}
Map<String, Object?> argMap = argument as Map<String, Object?>;
return argMap[key] as T?;
}