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

Метод pushNamed

Метод pushNamed виджета Navigator имя должно совпадать с RouteSettings.name в onGenerateRoute. Аргументы передают параметром arguments.

Синтаксис

Navigator.pushNamed( context, '/second', arguments: 'abcde', )

Параметры

Параметр Описание
context Контекст, от которого виджет ищут вверх по дереву.
routeName Строка маршрута для onGenerateRoute.
arguments Необязательный объект для следующего экрана.

Пример

Давайте откроем именованный маршрут:

import 'package:flutter/material.dart'; class NamedHome extends StatelessWidget { const NamedHome({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.pushNamed(context, '/second'); }, child: const Text('abcde'), ), ), ); } } Route<dynamic>? onGenerateRoute(RouteSettings settings) { if (settings.name == '/second') { return MaterialPageRoute<void>( settings: settings, builder: (ctx) => Scaffold( body: Center( child: Text('12345'), ), ), ); } return null; } void main() { runApp( MaterialApp( onGenerateRoute: onGenerateRoute, home: NamedHome(), ), ); }

На экране кнопка 'abcde'; pushNamed откроет маршрут '/second' с текстом '12345'.

Пример

Давайте передадим arguments в pushNamed:

import 'package:flutter/material.dart'; class ArgsHome extends StatelessWidget { const ArgsHome({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.pushNamed( context, '/show', arguments: 'abcde', ); }, child: const Text('12345'), ), ), ); } } class ArgsShow extends StatelessWidget { const ArgsShow({super.key}); @override Widget build(BuildContext context) { var args = ModalRoute.of(context)?.settings.arguments; return Scaffold( body: Center( child: Text('$args'), ), ); } } Route<dynamic>? onGenerateRoute(RouteSettings settings) { if (settings.name == '/show') { return MaterialPageRoute<void>( settings: settings, builder: (ctx) => const ArgsShow(), ); } return null; } void main() { runApp( MaterialApp( onGenerateRoute: onGenerateRoute, home: ArgsHome(), ), ); }

На втором экране по центру появится 'abcde' из arguments pushNamed.

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

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