【发布时间】:2019-06-17 22:18:49
【问题描述】:
我提前为我的英语道歉。
我目前正在开发一款移动应用,这是一款简单的游戏。游戏类似于 SimonSays。在我的应用程序中,有 4 个彩色 Container。容器随机突出显示,玩家必须点击突出显示的容器。每个Container 都与一个GestureDetector 相关联。此集合的期望行为是一次只能点击一个(通过更改容器的颜色来显示点击)。问题是我无法弄清楚如何管理容器。
我目前的做法是:
利用Notification 类并通知其他容器(或父小部件)容器已被点击。
我研究了这个主题,但找不到如何使用 Notification 类的好例子。下面提供了当前状态的代码sn-p:
class _parentColorWidget extends State<colorWidget> {
bool tapped = false;
Color _initColor;
Color color;
_parentColorWidget(Color color) {
this.color = color;
this._initColor = color;
}
void onTap(bool tapped) {
setState(() {
if (tapped) {
color = Colors.white70;
} else {
color = _initColor;
}
});
}
@override
Widget build(BuildContext context) {
return new Container(
child: _colorWidget(
onChanged: onTap,
context: context,
),
);
}
}
class colorWidget extends StatefulWidget {
Color color;
colorWidget(Color color) {
this.color = color;
}
_parentColorWidget createState() => _parentColorWidget(color);
}
class _colorWidget extends StatelessWidget {
_colorWidget({@required this.onChanged, this.color, this.context});
final ValueChanged<bool> onChanged;
BuildContext context;
Color color;
bool tapped = false;
void _onTap() {
CustomNotification(current_widget: this).dispatch(context);
onChanged(!tapped);
}
@override
Widget build(BuildContext context) {
return new GestureDetector(
onTap: _onTap,
child: new Container(
color: color,
));
}
}
我从这段代码生成了四个小部件。通过父小部件进行管理源自我在官方 Flutter 文档中找到的示例。
如果点击了正确的container,我如何使用通知来识别哪个container widget 被点击或更准确?
提前感谢所有答案。
【问题讨论】: