Флаг и видимость виджета в Flutter
Не только числа хранят в состоянии. Часто
нужен простой bool: панель открыта
или закрыта, подробности видны или скрыты.
В build по значению флага решают,
какой виджет вернуть - или используют
условие прямо в списке children:
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: HomePage()));
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
bool showDetails = false;
void toggleDetails() {
setState(() {
showDetails = !showDetails;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const Text('Order #104'),
if (showDetails)
const Padding(
padding: EdgeInsets.only(top: 8),
child: Text('Delivery tomorrow by 18:00'),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: toggleDetails,
child: Text(
showDetails ? 'Hide' : 'More',
),
),
],
),
),
);
}
}
Сделайте флаг visible и кнопку,
которая переключает его. Когда
visible истинно, под заголовком
показывайте Icon(Icons.check),
иначе иконку не рисуйте.