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

Переключение поля done у элемента в Flutter

Список задач часто хранит не только текст, но и отметку «выполнено». Удобно описать элемент простым классом с полями title и done. Список таких объектов лежит в State.

По нажатию на строку меняют items[index].done на противоположное и вызывают setState. Внешний вид можно менять: зачёркнутый Text через TextStyle с decoration: TextDecoration.lineThrough, если done равен true:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class TaskItem { TaskItem(this.title, {this.done = false}); String title; bool done; } class HomePage extends StatefulWidget { const HomePage({super.key}); @override State<HomePage> createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { final items = [ TaskItem('Buy bread'), TaskItem('Call mom', done: true), ]; void toggleDone(int index) { setState(() { items[index].done = !items[index].done; }); } @override Widget build(BuildContext context) { return Scaffold( body: ListView.builder( itemCount: items.length, itemBuilder: (context, index) { final task = items[index]; return ListTile( onTap: () => toggleDone(index), title: Text( task.title, style: TextStyle( decoration: task.done ? TextDecoration.lineThrough : null, ), ), leading: Icon( task.done ? Icons.check_circle : Icons.radio_button_unchecked, ), ); }, ), ); } }

Три задачи в списке. Нажатие на ListTile переключает done. Выполненные отображайте с иконкой Icons.check и зачёркнутым заголовком.

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