在flutter web中直接使用url参数导航到一个网页

Posted

技术标签:

【中文标题】在flutter web中直接使用url参数导航到一个网页【英文标题】:Navigate to a webpage directly with url parameters in flutter web 【发布时间】:2020-06-20 07:41:31 【问题描述】:

我正在为带有 Flutter Web 的文章创建一个简单的 Web 应用程序,用户可以使用包含文章 ID 的参数的链接导航到特定文章,例如 webpage.com/articles/123。到目前为止,我已经阅读并尝试了很多东西但没有任何效果。我能够从 URL 中提取 Id。但是,当用户尝试在地址栏中执行此操作并且用户被重定向到主页时,不会显示任何页面。我怎样才能做到这一点。

【问题讨论】:

【参考方案1】:

我试用了 flutter_modular 包,效果很好。

【讨论】:

您好,我也在使用 flutter_modular。但是,当我尝试直接访问 url 或重新加载页面时,它会重定向回我的初始路由。您是否需要做一些特别的事情才能直接导航到网址? 不,我按照页面上的正常文档进行操作。 @user1026498 您好,在使用 Navigator velocity_x 库完成 URl 导航后,我也遇到了同样的问题。你解决了你的问题吗?你也能帮帮我吗?提前致谢【参考方案2】:

首先,您需要使用路由导航并在MaterialApp 类中定义它们。正确完成后,您的 Flutter 应用程序将直接启动特定的 ArticlesScreens - 然后您可以分享链接(例如 webpage.com/articles/123),将其粘贴到浏览器中,然后登陆您的应用程序的 ArticlesScreen,显示 id 为 123 的文章.

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      onGenerateRoute: (settings) 
        if (settings.name.contains("/articles/")) 
          //parse the URL and get the article ID here
          final String articleId = getArticleIdFromUrl(settings.name);

          return ArticleScreen(articleId: articleId);
        

        switch (settings.name) 
          case "/":
            return MainScreen();
          default:
            return MainScreen();
        
      ,
      initialRoute: "/",
    );
  

【讨论】:

【参考方案3】:

你需要在你的 Material 应用中添加路由:

home: ProjectPage(),
routes: <String, WidgetBuilder>
      '/home': (BuildContext context) => HomePage(),
      '/login': (BuildContext context) => LoginPage(),
,

【讨论】:

您没有在答案中解决 url 参数 其实从那以后,我只使用Getx进行路由管理和导航,它处理URL参数非常好和容易。

以上是关于在flutter web中直接使用url参数导航到一个网页的主要内容,如果未能解决你的问题,请参考以下文章

带有 url 更新和超链接支持的 Flutter web 底部导航栏

为啥在我的 Flutter Web 上使用路径 URL 策略会破坏我的导航?

使用 Fluro 导航(Flutter web)

Flutter Web URL 导航,例如 http://myflutterproject/userabc

如何使用 GetX 包管理 Flutter Web URL 路由?

Flutter 通过命名路由导航直接传递参数