34 lines
968 B
Dart
34 lines
968 B
Dart
import 'package:ef/ef.dart';
|
|
import 'package:get_storage/get_storage.dart';
|
|
|
|
/// 单例通知路由管理
|
|
class NotificationRouteManager {
|
|
static final NotificationRouteManager _instance =
|
|
NotificationRouteManager._internal();
|
|
factory NotificationRouteManager() => _instance;
|
|
NotificationRouteManager._internal();
|
|
|
|
final box = GetStorage();
|
|
|
|
/// 保存待跳转的路由
|
|
void savePendingRoute(String route, {Map<String, dynamic>? arguments}) {
|
|
box.write("pendingRoute", {
|
|
"route": route,
|
|
"arguments": arguments,
|
|
});
|
|
}
|
|
|
|
/// 立即尝试执行跳转(如果 GetMaterialApp 已就绪)
|
|
void handlePendingRoute() {
|
|
var pending = box.read("pendingRoute");
|
|
if (pending != null) {
|
|
String route = pending["route"];
|
|
var args = pending["arguments"];
|
|
Future.delayed(const Duration(milliseconds: 200), () {
|
|
Get.toNamed(route, arguments: args);
|
|
});
|
|
box.remove("pendingRoute");
|
|
}
|
|
}
|
|
}
|