如何在flutter中更新非root导航器的路由更改时的浏览器URL?

Bla*_*ova 8 dart flutter

当我在 flutter 应用程序中使用嵌套的 Navigators 时,我正在尝试更新 Web URL。

/具有一个导航到该/sub路线的FlatButton的默认路线。然后在_generateSubRoute->/second

这是我的例子:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      routes: {
    // When navigating to the "/" route, build the FirstScreen widget
        '/': (context) => Scaffold(
              body: FlatButton(
                onPressed: () {
                  Navigator.of(context).pushNamed('/sub');
                },
                child: Text(
                  "Go to sub",
                ),
              ),
            ),
// When navigating to the "/second" route, build the  SecondScreen widget.
        '/sub': (context) =>
            Scaffold(body: Column(children: [Text('/sub'), Flexible(
              child: Navigator(
                onGenerateRoute: _generateSubRoute ))]))
      });
  }

  Route _generateSubRoute(RouteSettings settings) {
    if (settings.name == '/second') {
      return MaterialPageRoute(
        settings: settings,
        builder: (BuildContext context) => Text('Second screen')
      );
    }

    return MaterialPageRoute(
        settings: settings,
        builder: (BuildContext context) => Column(children: <Widget>[
          Text('/subroot/'),
          FlatButton(
            onPressed: () {
              Navigator.of(context).pushNamed('/second');
            },
            child: Text(
              "Go to second",
            ))])
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

网址在此代码中无法正常工作。知道如何解决这个问题吗?

小智 0

import 'dart:html' as html; html.window.history.pushState(null, "Home", "/");

  • 然而,这段代码可能会回答这个问题,提倡您的解决方案是一个很好的做法。 (3认同)