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

Метод push

Метод push виджета Navigator кладёт новый маршрут поверх стопки. Первый аргумент это контекст, второй это Route. Обычно маршрутом служит MaterialPageRoute.

Синтаксис

Navigator.push( context, MaterialPageRoute<void>( builder: (context) => nextScreen, ), )

Параметры

Параметр Описание
context Контекст, от которого виджет ищут вверх по дереву.
route Новый Route, который станет верхним.

Пример

Давайте откроем второй экран по кнопке:

import 'package:flutter/material.dart'; class FirstPage extends StatelessWidget { const FirstPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.push( context, MaterialPageRoute<void>( builder: (ctx) => const SecondPage(), ), ); }, child: const Text('abcde'), ), ), ); } } class SecondPage extends StatelessWidget { const SecondPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Text('12345'), ), ); } } void main() { runApp( MaterialApp( home: FirstPage(), ), ); }

На экране кнопка 'abcde'; push открывает поверх неё экран с '12345'.

Пример

Давайте вернём результат через pop после push:

import 'package:flutter/material.dart'; class PickPage extends StatelessWidget { const PickPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () async { await Navigator.push<String>( context, MaterialPageRoute<String>( builder: (ctx) => Scaffold( body: Center( child: ElevatedButton( onPressed: () { Navigator.pop(ctx, '12345'); }, child: const Text('pick'), ), ), ), ), ); }, child: const Text('abcde'), ), ), ); } } void main() { runApp( MaterialApp( home: PickPage(), ), ); }

На экране push открывает экран выбора; pop с результатом закрывает его и возвращает строку в await.

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

  • метод pop,
    который снимает Route после push
  • метод pushReplacement,
    который меняет верхний Route без роста стопки
  • класс MaterialPageRoute,
    типичный Route для push
  • метод of,
    доступ к NavigatorState
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить