波动网络中的路由具有意外行为

问题描述 投票:3回答:1

[在Flutter中使用内置的脚手架/应用程序栏来管理Web时,使用导航器推送新路线时,应用程序栏上仍显示后退按钮,浏览器中的网址保持不变。这意味着浏览器的后退按钮不起作用,这是一个非常奇怪的UX。有没有办法解决这个问题?

我已经尝试以许多不同的方式推送路由(pushReplacement摆脱了后退按钮,但是浏览器的后退按钮仍然无法使用)

HomeScreen.dart

  @override
  State<StatefulWidget> createState() {
    return HomeScreenState();
  }
}

class HomeScreenState extends State<HomeScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      endDrawer: Navbar.buildDrawer(context),
      appBar: Navbar.buldNavbar(context),
      body: _buildBody(),
    );
  }

  Widget _buildBody(){
    return Text('Home');
  }
}

Navbar.dart

  static Drawer buildDrawer(BuildContext context) {
    return Drawer(
      child: ListView(
        children: <Widget>[
          ListTile(
            title: Text('Home'),
            leading: Icon(Icons.home),
            onTap: (){
              Navigator.of(context).pushReplacementNamed('/');
            },
          ),
          ListTile(
            title: Text('About Us'),
            leading: Icon(Icons.people),
            onTap: (){
              Navigator.of(context).pushReplacementNamed('/about');
            },
          ),
          ListTile(
            title: Text('Contact'),
            leading: Icon(Icons.contact_mail),
            onTap: (){
              Navigator.of(context).pushReplacementNamed('/contact');
            },
          )
        ],
      ),
    );
  }

  static AppBar buldNavbar(BuildContext context) {
    return AppBar(
      title: FlatButton(
        child: Padding(
          padding: EdgeInsets.all(8),
          child: Image.asset('assets/whiteLogo.png'),
        ),
        onPressed: () {
          Navigator.of(context).pushNamed('/');
        },
      ),
    );
  }
}

我希望路由会更改浏览器中的url,使我们能够使用后退按钮和常规路由的其他功能,但实际结果是在浏览器中显示相同的路由,并且必须使用自动AppBar后退按钮] >

[在Flutter中使用内置的脚手架/应用程序栏来控制Web波动时,使用导航器推送新路线时,应用程序栏中仍会显示后退按钮,浏览器中的URL保持不变。...

flutter dart routing flutter-web
1个回答
0
投票

看起来像是扑扑的更新现在解决了这个问题。使用导航器时,现在会发生预期的行为。

© www.soinside.com 2019 - 2024. All rights reserved.