首页 > 解决方案 > 如何在flutter中将路由更改更新为非root Navigator的浏览器URL?

问题描述

当我在我的颤振应用程序中使用我的嵌套导航器时,我正在尝试更新 Web URL。

/具有导航到该路线的 FlatButton的默认/sub路线。然后_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",
            ))])
    );
  }
}

此代码中的 Web url 无法正常工作。知道如何解决这个问题吗?

标签: flutterdart

解决方案


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


推荐阅读