使用flutter画一个类似于表格的图形化界面,点击哪一个方格改变方格为指定颜色
时间: 2023-12-14 16:36:44 浏览: 135
好的,以下是一个简单的示例代码,可以实现类似于表格的图形化界面并且可以改变方格颜色:
```dart
import 'package:flutter/material.dart';
class GridTablePage extends StatefulWidget {
@override
_GridTablePageState createState() => _GridTablePageState();
}
class _GridTablePageState extends State<GridTablePage> {
List<List<Color>> _gridColors; // 存储方格颜色的2维数组
@override
void initState() {
super.initState();
// 初始化方格颜色数据
_gridColors = List.generate(4, (_) => List.filled(4, Colors.white));
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Grid Table'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 循环渲染表格行
for (int i = 0; i < _gridColors.length; i++)
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 循环渲染表格列
for (int j = 0; j < _gridColors[i].length; j++)
GestureDetector(
onTap: () {
setState(() {
// 点击时修改方格颜色
_gridColors[i][j] =
_gridColors[i][j] == Colors.white
? Colors.blue
: Colors.white;
});
},
child: Container(
width: 50,
height: 50,
margin: EdgeInsets.all(5),
color: _gridColors[i][j],
),
),
],
),
],
),
),
);
}
}
```
在这个示例中,我们使用 `List<List<Color>>` 存储方格颜色的2维数组,循环渲染表格行和列,使用 `GestureDetector` 实现点击事件响应,并且在 `setState` 中修改方格颜色。
阅读全文