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

Аргументы экрана через конструктор в Flutter

В учебнике мы передаём параметры явно: второй экран - это класс с полями, которые заполняют при создании в builder маршрута. Так типы видны сразу, и IDE подсказывает обязательные аргументы.

Схема ModalRoute.of(context)!.settings.arguments встречается в старых примерах. Сложный объект передают полем конструктора, если его не меняют по ссылке на втором экране. Для небольших приложений удобнее DetailsScreen(title: '…', id: 3) прямо в MaterialPageRoute:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: CatalogPage())); } class CatalogPage extends StatelessWidget { const CatalogPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Catalog')), body: ListView( children: [ ListTile( title: const Text('Book'), subtitle: const Text('590 ₽'), onTap: () { Navigator.push( context, MaterialPageRoute<void>( builder: (context) => const ProductScreen( name: 'Book', price: 590, ), ), ); }, ), ], ), ); } } class ProductScreen extends StatelessWidget { const ProductScreen({ super.key, required this.name, required this.price, }); final String name; final int price; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(name)), body: Center( child: Text('Price: $price', style: const TextStyle(fontSize: 24)), ), ); } }

Список из трёх ListTile открывает экран товара с названием и описанием из конструктора. На экране товара выведите оба поля разными стилями Text.

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