Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
756 of 1024 menu
◀ ▶

Класс RouteInformationParser

Класс RouteInformationParser реализуют для Router. Метод parseRouteInformation читает RouteInformation. Метод restoreRouteInformation собирает URI обратно из конфигурации.

Синтаксис

class AppParser extends RouteInformationParser<AppConfig> { @override Future<AppConfig> parseRouteInformation( RouteInformation routeInformation, ) async { return AppConfig(routeInformation.uri.path); } }

Методы

Метод Описание
parseRouteInformation На вход приходит RouteInformation, на выходе - тип конфигурации delegate. Давайте разберём вызов на примерах.
restoreRouteInformation Router вызывает его, когда нужно обновить адрес в браузере или сообщить платформе новый URI. Давайте разберём вызов на примерах.

Пример

Давайте распарсим path из URI:

import 'package:flutter/material.dart'; class AppConfig { AppConfig(this.path); final String path; } class AppParser extends RouteInformationParser<AppConfig> { @override Future<AppConfig> parseRouteInformation( RouteInformation routeInformation, ) async { return AppConfig(routeInformation.uri.path); } @override RouteInformation restoreRouteInformation(AppConfig configuration) { return RouteInformation(uri: Uri.parse(configuration.path)); } } void main() { var parser = AppParser(); parser.parseRouteInformation( RouteInformation(uri: Uri.parse('/detail')), ).then((cfg) { runApp( MaterialApp( home: Scaffold( body: Center( child: Text(cfg.path), ), ), ), ); }); }

На экране по центру появится '/detail' после parseRouteInformation.

Пример

Давайте восстановим URI через restoreRouteInformation:

import 'package:flutter/material.dart'; class AppConfig { AppConfig(this.path); final String path; } class AppParser extends RouteInformationParser<AppConfig> { @override Future<AppConfig> parseRouteInformation( RouteInformation routeInformation, ) async { return AppConfig(routeInformation.uri.path); } @override RouteInformation restoreRouteInformation(AppConfig configuration) { return RouteInformation(uri: Uri.parse(configuration.path)); } } void main() { var parser = AppParser(); var info = parser.restoreRouteInformation(AppConfig('/home')); runApp( MaterialApp( home: Scaffold( body: Center( child: Text('${info.uri}'), ), ), ), ); }

На экране по центру строка URI с путём '/home'.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить