From 93d210d8e5abf1e302085311b26129ce127c1a58 Mon Sep 17 00:00:00 2001 From: ColdPaleLight Date: Thu, 15 Apr 2021 16:17:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Drelease=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E4=B8=8B=E7=AC=AC=E4=BA=8C=E6=AC=A1=E6=89=93=E5=BC=80Flutter?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=87=BA=E7=8E=B0=E7=81=B0=E8=89=B2=E8=92=99?= =?UTF-8?q?=E5=B1=82=E9=97=AE=E9=A2=98=EF=BC=8C=E9=9D=9E=E5=B8=B8=E6=84=9F?= =?UTF-8?q?=E8=B0=A2=20@gx2015?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/lib/main.dart | 8 ++++---- lib/flutter_boost_app.dart | 27 ++++++++++++++++++++------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index a2a7f491..ec5add64 100755 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -23,10 +23,10 @@ class MyApp extends StatefulWidget { class _MyAppState extends State { static Map routerMap = { - '/': (settings, uniqueId) { - return PageRouteBuilder( - settings: settings, pageBuilder: (_, __, ___) => Container()); - }, + // '/': (settings, uniqueId) { + // return PageRouteBuilder( + // settings: settings, pageBuilder: (_, __, ___) => Container()); + // }, 'embedded': (settings, uniqueId) { return PageRouteBuilder( settings: settings, diff --git a/lib/flutter_boost_app.dart b/lib/flutter_boost_app.dart index 91e26901..c3ba4f4b 100644 --- a/lib/flutter_boost_app.dart +++ b/lib/flutter_boost_app.dart @@ -15,9 +15,10 @@ typedef FlutterBoostRouteFactory = Route Function( RouteSettings settings, String uniqueId); class FlutterBoostApp extends StatefulWidget { - const FlutterBoostApp(this.routeFactory, + FlutterBoostApp(FlutterBoostRouteFactory routeFactory, {FlutterBoostAppBuilder appBuilder, String initialRoute}) - : appBuilder = appBuilder ?? _materialAppBuilder, + : routeFactory = routeFactoryWrapper(routeFactory), + appBuilder = appBuilder ?? _materialAppBuilder, initialRoute = initialRoute ?? '/'; final FlutterBoostRouteFactory routeFactory; @@ -28,6 +29,18 @@ class FlutterBoostApp extends StatefulWidget { return MaterialApp(home: home); } + static FlutterBoostRouteFactory routeFactoryWrapper( + FlutterBoostRouteFactory routeFactory) { + return (RouteSettings settings, String uniqueId) { + Route route = routeFactory(settings, uniqueId); + if (route == null && settings.name == '/') { + route = PageRouteBuilder( + settings: settings, pageBuilder: (_, __, ___) => Container()); + } + return route; + }; + } + @override State createState() => FlutterBoostAppState(); } @@ -378,8 +391,9 @@ class BoostPage extends Page { key: UniqueKey(), pageInfo: pageInfo, routeFactory: routeFactory); } - final List> _route = >[]; - Route get route => _route.isEmpty ? null : _route.first; + Route _route; + + Route get route => _route; @override String toString() => @@ -387,9 +401,8 @@ class BoostPage extends Page { @override Route createRoute(BuildContext context) { - _route.clear(); - _route.add(routeFactory(this, pageInfo.uniqueId)); - return _route.first; + _route = routeFactory(this, pageInfo.uniqueId); + return _route; } }