Flutter网站网址导航

时间:2019-12-30 10:50:06

标签: flutter dart flutter-web

我想知道如何在Flutter Web应用程序中导航到URL。

当前使用的是Navigator.of(context).push(MaterialPageRoute(...));,我只在地址栏中看到localhost:5354/#/

我还想知道如何通过将URL粘贴到浏览器的地址栏中直接导航到特定URL。

2 个答案:

答案 0 :(得分:1)

您需要使用命名的路由,而不是直接使用类来路由。 您可以使用名为fluro https://pub.dev/packages/fluro的软件包 否则,您可以使用flutter提供的默认导航。

使用fluro,您可以执行以下操作

main.dart

import '../routes/routes.dart';


void main() {
  FluroRouter.setupRouter();
// run app
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: '/',
      onGenerateRoute: FluroRouter.router.generator,
    );
  }
}

routes.dart

import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';

class FluroRouter {
  static Router router = Router();
  static Handler _storyhandler = Handler(
      handlerFunc: (BuildContext context, Map<String, dynamic> params) =>
          HomeView(id: params['id'][0]));
  static Handler _homehandler = Handler(
      handlerFunc: (BuildContext context, Map<String, dynamic> params) =>
          Home());
  static void setupRouter() {
    router.define(
      '/',
      handler: _homehandler,
    );
    router.define(
      '/story/:id',
      handler: _storyhandler,
    );
  }
}

您还可以使用查询参数定义路由。

希望这会有所帮助!

答案 1 :(得分:0)

您可以使用url_launcher插件:-https://pub.dev/packages/url_launcher

然后在您的代码中

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() {
   runApp(Scaffold(
     body: Center(
     child: RaisedButton(
        onPressed: _launchURL,
        child: Text('Show Flutter homepage'),
        ),
      ),
   ));
  }

_launchURL() async {
 const url = 'https://flutter.io';
  if (await canLaunch(url)) {
   await launch(url);
  } else {
   throw 'Could not launch $url';
 }
}

示例来自打包站点

相关问题