我想知道如何在Flutter Web应用程序中导航到URL。
当前使用的是Navigator.of(context).push(MaterialPageRoute(...));
,我只在地址栏中看到localhost:5354/#/
。
我还想知道如何通过将URL粘贴到浏览器的地址栏中直接导航到特定URL。
答案 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';
}
}
示例来自打包站点