'Flutter settings.name incomplete on page reload
I have a route setup. In the browser, it looks like this.
localhost:1234/#/member/D8B5D7F17639A28FE83C47AFFC69592E?
I use an onGenerateRoute function like this (very truncated)
Route<dynamic> generateRoute(RouteSettings settings) {
Uri uri = Uri.parse(settings.name ?? "");
final Map args = (settings.arguments ?? {}) as Map<dynamic, dynamic>;
List<String> urlParts = uri.path.substring(1).split("/");
urlParts[0] = '/' + urlParts[0];
Widget selectedRoute = () {
print(urlParts);
if (urlParts[0] == '/member') {
return CardGuestViewProfile(memberCode: urlParts[1]);
}
return AppHomeScreen();
}()
return MaterialPageRoute(builder: (context) => selectedRoute,
settings: RouteSettings(name: settings.name));
}
Everything works great. The print statement outputs:
[/member, D8B5D7F17639A28FE83C47AFFC69592E]
However, if I refresh the page. The visible url is not overwritten. It still says
localhost:1234/#/member/D8B5D7F17639A28FE83C47AFFC69592E?
But I get Unexpected null value
for urlParts[1]
because urlParts now prints as
[/member]
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|