Навигация по веб-URL Flutter

Я хотел бы знать, как мне перейти по URL-адресу в моем веб-приложении Flutter.

В настоящее время я использую Navigator.of(context).push(MaterialPageRoute(...)); и получаю только localhost:5354/#/ в адресной строке.

Также я хотел бы знать, как я могу перейти к определенному URL-адресу напрямую, просто вставив URL-адрес в адресную строку браузера.


person Norbert    schedule 30.12.2019    source источник
comment
Думаю, вы ищете url_launcher. Проверьте это на pub.dev/packages/url_launcher   -  person shubhgkr    schedule 30.12.2019


Ответы (1)


Вам нужно использовать именованные маршруты вместо прямого использования классов для маршрутов. Вы можете использовать этот пакет под названием fluro https://pub.dev/packages/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,
    );
  }
}

вы также можете определять маршруты с параметрами запроса.

Надеюсь это поможет!

person Shekar Mudaliyar    schedule 30.12.2019
comment
Я протестировал оба метода и добился успеха только с Fluro (даже если на официальной странице пакета не упоминается веб-совместимость). Как ни странно, я получаю неожиданную ошибку при использовании по умолчанию Flutter с именем навигации по маршрутам в сети ¯_ (ツ) _ / ¯ - person rootasjey; 06.02.2020
comment
@rootasjey странно, что при использовании onGenerateRoute не удается добавить маршруты к URL-адресу, но использование маршрутов добавляет его. : | - person Jagadish Nallappa; 30.06.2021