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

Обработчик с параметром в Flutter

В списке у каждой строки свой обработчик, но код не хочется копировать. В Dart удобно передать в onPressed замыкание: функцию без имени, которая «запоминает» значение из окружения.

Запись () { debugPrint(name); } создаётся заново для каждого элемента цикла и захватывает своё name. Так одна и та же форма кнопки или GestureDetector различает, какую строку нажали. Экран пока не меняется - только вывод в консоль; реакцию интерфейса добавим в разделе про состояние:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class HomePage extends StatelessWidget { const HomePage({super.key}); static const cities = ['Moscow', 'Kazan', 'Sochi']; @override Widget build(BuildContext context) { return Scaffold( body: ListView( children: [ for (final name in cities) ListTile( title: Text(name), trailing: IconButton( icon: const Icon(Icons.info_outline), onPressed: () { // captures this name, not the last debugPrint(name); }, ), ), ], ), ); } }

Выведите три ElevatedButton с подписями 'A', 'B' и 'C' в Column. У каждой кнопки в onPressed - своё замыкание, которое печатает соответствующую букву через debugPrint.

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