Маршруты во флаттере имеют неожиданное поведение - PullRequest
1 голос
/ 23 сентября 2019

При использовании встроенного скаффолда / панели приложения в флаттере для веб-флаттера, при нажатии новых маршрутов с помощью навигатора кнопка «Назад» по-прежнему отображается на панели приложения, а URL-адрес в браузере остается неизменным.Это означает, что кнопка возврата браузера не работает, что является очень странным 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 в браузере, что позволит нам использовать кнопку "Назад" и другие функции обычной маршрутизации, но фактический результат - тот же самый маршрут, отображаемый в браузере и использующий автоматическую кнопку возврата на панели приложений

...