gpt4 book ai didi

dart - 如何访问特定容器的颜色?

转载 作者:IT王子 更新时间:2023-10-29 07:13:41 25 4
gpt4 key购买 nike

以下片段来 self 正在玩的应用。

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'LayoutBuilder',
home: Scaffold(
appBar: new AppBar(
title: new Text('LayoutBuilder'),
),
body: new LayoutBuilder(
builder: (context, constaint) {
children: <Widget> [
return new GridView.count(
crossAxisCount: 3,
children: <Widget>[
new Container(child: new Center(child: new Text("data")),
decoration: BoxDecoration(color: Colors.indigo,
shape: BoxShape.circle)),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
new Container(child: ...),
],
);
},
),
)
);
}
}

每个容器都有不同的 BoxDecoration 颜色。

在某些时候,比如说,在用户点击时,我想交换两个 Container 的颜色。我想编写“children: tiles = [”,但这违反了语言规则。如果可以的话,我可以通过索引访问特定的容器,如 tiles[0]、tiles[1]、....

那么,如何访问特定容器中的颜色?

最佳答案

我建议不要访问容器的颜色,而是将颜色作为成员变量保存到类中,并从中构建容器。

通过这种方式,您可以简单地 setState() 列表中颜色的顺序(尽管您可能必须小心它会将列表识别为已更改 - flutter 可能会天真地列出相同的对象' 而不是实际检查其元素是否更改,在这种情况下,您可以简单地保留一个随着每次更改而递增的整数)。

如果这不可能,您可能会保留一个 GlobalKeys 列表并将它们传递给每个容器(尽管不是使用容器,您必须使用自己的 StatefulWidget 并在其状态中设置颜色)。但是,我强烈建议不要这样做。

关于dart - 如何访问特定容器的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com