Skip to content

Commit

Permalink
修复release环境下第二次打开Flutter页面出现灰色蒙层问题,非常感谢 @gx2015
Browse files Browse the repository at this point in the history
  • Loading branch information
ColdPaleLight committed Apr 15, 2021
1 parent b1f0071 commit 93d210d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 11 deletions.
8 changes: 4 additions & 4 deletions example/lib/main.dart
Expand Up @@ -23,10 +23,10 @@ class MyApp extends StatefulWidget {

class _MyAppState extends State<MyApp> {
static Map<String, FlutterBoostRouteFactory> routerMap = {
'/': (settings, uniqueId) {
return PageRouteBuilder<dynamic>(
settings: settings, pageBuilder: (_, __, ___) => Container());
},
// '/': (settings, uniqueId) {
// return PageRouteBuilder<dynamic>(
// settings: settings, pageBuilder: (_, __, ___) => Container());
// },
'embedded': (settings, uniqueId) {
return PageRouteBuilder<dynamic>(
settings: settings,
Expand Down
27 changes: 20 additions & 7 deletions lib/flutter_boost_app.dart
Expand Up @@ -15,9 +15,10 @@ typedef FlutterBoostRouteFactory = Route<dynamic> 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;
Expand All @@ -28,6 +29,18 @@ class FlutterBoostApp extends StatefulWidget {
return MaterialApp(home: home);
}

static FlutterBoostRouteFactory routeFactoryWrapper(
FlutterBoostRouteFactory routeFactory) {
return (RouteSettings settings, String uniqueId) {
Route<dynamic> route = routeFactory(settings, uniqueId);
if (route == null && settings.name == '/') {
route = PageRouteBuilder<dynamic>(
settings: settings, pageBuilder: (_, __, ___) => Container());
}
return route;
};
}

@override
State<StatefulWidget> createState() => FlutterBoostAppState();
}
Expand Down Expand Up @@ -378,18 +391,18 @@ class BoostPage<T> extends Page<T> {
key: UniqueKey(), pageInfo: pageInfo, routeFactory: routeFactory);
}

final List<Route<T>> _route = <Route<T>>[];
Route<T> get route => _route.isEmpty ? null : _route.first;
Route<T> _route;

Route<T> get route => _route;

@override
String toString() =>
'${objectRuntimeType(this, 'BoostPage')}(name:$name, uniqueId:${pageInfo.uniqueId}, arguments:$arguments)';

@override
Route<T> createRoute(BuildContext context) {
_route.clear();
_route.add(routeFactory(this, pageInfo.uniqueId));
return _route.first;
_route = routeFactory(this, pageInfo.uniqueId);
return _route;
}
}

Expand Down

0 comments on commit 93d210d

Please sign in to comment.