Condition:
Step:
- With the code below, start the app by "flutter run -d chrome"
2.Click "to the Home" button.
3.Click "to the Root" button.
4.You see the Red Screen with the assertion message.
Comment:
-
as you can see from the code, I have tested using onGenerateRoute with the switch case. This works.
-
but what I want to achieve is to create routing table from setting file. which probably need Map
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
final Map rootMap;
MyApp():
rootMap = {
"/": MaterialPageRoute(builder:(context) => Root()),
'/Home': MaterialPageRoute(builder:(context) => Home()),
};
Route<dynamic> generateRouteByMap(RouteSettings settings) {
if(rootMap[settings.name] != null){
return rootMap[settings.name];
}
else{
return MaterialPageRoute(builder:(context) => Root());
}
}
Route<dynamic> generateRouteBySwitch(RouteSettings settings) {
switch(settings.name){
case "/Home":
return MaterialPageRoute(builder:(context) => Home());
default:
return MaterialPageRoute(builder:(context) => Root());
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Reproduce',
// routes: {
// "/": (context) => Root(),
// "/Home": (context) => Home(),
// },
// onGenerateRoute: generateRouteBySwitch,
onGenerateRoute: generateRouteByMap,
);
}
}
class Root extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Text("Root"),
FlatButton(
child: Text("to the Home"),
onPressed: () {
Navigator.popAndPushNamed(context, "/Home");
},
),
],
);
}
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Text("home"),
FlatButton(
child: Text("to The Root"),
onPressed: () {
Navigator.popAndPushNamed(context, "/");
},
),
],
);
}
}
and the Assertion message is following
══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following assertion was thrown while handling a gesture:
Assertion failed: org-dartlang-app:///packages/flutter/src/widgets/navigator.dart:1788:12
route._navigator == null
is not true
package:flutter/src/gestures/binding.dart 156:7
[_handlePointerEvent]
package:flutter/src/gestures/binding.dart 102:7
[_flushPointerEventQueue]
package:flutter/src/gestures/binding.dart 86:32
[_handlePointerDataPacket]
package:build_web_compilers/src/dev_compiler/C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 89:15
[_onPointerData]
package:build_web_compilers/src/dev_compiler/C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 261:7
package:build_web_compilers/src/dev_compiler/C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 173:16
Handler: "onTap"
Recognizer:
TapGestureRecognizer#0a0fa
════════════════════════════════════════════════════════════════════════════════════════════════════
Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/widgets/navigator.dart:2330:12
Condition:
using Chrome-Develop for the web
using "flutter channel master" 2019-11-5 tokyo
("flutter version" shows tons of v 1.XX.XX . so I am not sure what to write here)
Step:
2.Click "to the Home" button.
3.Click "to the Root" button.
4.You see the Red Screen with the assertion message.
Comment:
as you can see from the code, I have tested using onGenerateRoute with the switch case. This works.
but what I want to achieve is to create routing table from setting file. which probably need Map
and the Assertion message is following
══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following assertion was thrown while handling a gesture:
Assertion failed: org-dartlang-app:///packages/flutter/src/widgets/navigator.dart:1788:12
route._navigator == null
is not true
package:flutter/src/gestures/binding.dart 156:7
[_handlePointerEvent]
package:flutter/src/gestures/binding.dart 102:7
[_flushPointerEventQueue]
package:flutter/src/gestures/binding.dart 86:32
[_handlePointerDataPacket]
package:build_web_compilers/src/dev_compiler/C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 89:15
[_onPointerData]
package:build_web_compilers/src/dev_compiler/C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 261:7
package:build_web_compilers/src/dev_compiler/C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/pointer_binding.dart 173:16
Handler: "onTap"
Recognizer:
TapGestureRecognizer#0a0fa
════════════════════════════════════════════════════════════════════════════════════════════════════
Another exception was thrown: Assertion failed: org-dartlang-app:///packages/flutter/src/widgets/navigator.dart:2330:12