import 'package:flutter/material.dart';
class ColorItem {
GlobalKey key;
Color color;
ColorItem({required this.color}) : key = GlobalKey();
}
class FlutterKey extends StatefulWidget {
const FlutterKey({super.key});
@override
State<FlutterKey> createState() => _FlutterKeyState();
}
class _FlutterKeyState extends State<FlutterKey> {
List<ColorItem> colorList = [
ColorItem(color: Colors.cyan),
ColorItem(color: Colors.pink),
ColorItem(color: Colors.indigo),
ColorItem(color: Colors.deepOrangeAccent),
];
List<Widget> colorContainer() {
return colorList.map((color) {
return ColorBox(
color: color.color,
key: color.key,
);
}).toList();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('FLutterKey'),
),
body: SizedBox(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: colorContainer(),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
for (var color in colorList) {
var state = color.key.currentState as _ColorBoxState;
var w = color.key.currentWidget as ColorBox;
setState(() {
state.num = 0;
});
}
});
},
child: const Icon(Icons.refresh),
));
}
}
class ColorBox extends StatefulWidget {
final Color color;
const ColorBox({Key? key, required this.color}) : super(key: key);
@override
State<ColorBox> createState() => _ColorBoxState();
}
class _ColorBoxState extends State<ColorBox> {
int num = 0;
@override
Widget build(BuildContext context) {
return Container(
width: 60,
height: 60,
decoration: BoxDecoration(
color: widget.color,
borderRadius: BorderRadius.circular(5),
),
margin: const EdgeInsets.only(bottom: 10),
child: Center(
child: TextButton(
onPressed: () {
setState(() {
num++;
});
},
child: Text(
num.toString(),
style: const TextStyle(color: Colors.white),
),
),
),
);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效