首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flutter Web首先加载初始页面,即使使用#/page加载URL时也是如此

Flutter Web首先加载初始页面,即使使用#/page加载URL时也是如此
EN

Stack Overflow用户
提问于 2020-07-09 01:16:16
回答 2查看 429关注 0票数 0

我正在尝试这里提供的标准导航应用程序https://flutter.dev/docs/cookbook/navigation/named-routes。即使我打开浏览器访问http://localhost:8080/#/second,它也会构建页面1,然后将其替换为页面2,甚至会向用户显示一个后退按钮。我真的想把用户直接带到第二个页面,而不是“传递go”。有什么想法吗?

下面是添加了一些打印内容的代码

代码语言:javascript
运行
复制
import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    title: 'Named Routes Demo',
    routes: {
      '/': (context) => FirstScreen(),
      '/second': (context) => SecondScreen(),
    },
  ));
}

class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print ("Screen 1 building");
    return Scaffold(
      appBar: AppBar(
        title: Text('First Screen'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Launch second screen'),
          onPressed: () {
            // Navigate to the second screen using a named route.
            Navigator.pushNamed(context, '/second');
          },
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print ("Screen 2 building");
    return Scaffold(
      appBar: AppBar(
        title: Text("Second Screen"),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('This is screen 2, go to 1!'),
        ),
      ),
    );
  }
}
EN

回答 2

Stack Overflow用户

发布于 2020-07-09 04:21:06

我认为你应该将第二个屏幕转换为StatefulWidget来添加didChangeDependencies或initState,并将你的Navigator.pop(context)添加到自动转到FirstScreen

票数 0
EN

Stack Overflow用户

发布于 2021-04-09 08:49:44

您可以在第14行<base href="/"><FlutterProject>/web/index.html中设置默认路由路径。

它默认设置为"/“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62800142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档