'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