所以我有一个margin: -20px 0 0 -20px;
小部件,该小部件在构造函数中传递了ChipSet
小部件的列表。
MyChip
芯片小部件的代码如下:
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:hello_world/widgets/chip.dart';
class ChipSet extends StatefulWidget {
final List<MyChip> chips;
ChipSet({
Key key,
@required this.chips,
}) : super(key: key);
@override
_ChipSetState createState() => _ChipSetState();
}
class _ChipSetState extends State<ChipSet> {
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: widget.chips
);
}
}
我想要以下内容:对于import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
class MyChip extends StatelessWidget {
final bool active;
final Color color;
final IconData icon;
final String text;
final EdgeInsets padding;
MyChip({
Key key,
@required this.color,
@required this.icon,
@required this.text,
this.active = false,
this.padding = const EdgeInsets.all(0)
}) : super(key: key);
void _onTap() {
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _onTap,
child: Container(
padding: const EdgeInsets.all(4),
margin: const EdgeInsets.only(right: 6),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12)),
color: active ? color : Colors.white),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Icon( icon, size: 15),
Padding(
padding: padding,
child: Text(text,
style: TextStyle(fontSize: 12, color: Colors.black)),
)
],
)));
}
}
小部件,在任何给定时间只有一个活动的ChipSet
。单击芯片小部件将使MyChip
处于活动状态,从而使该MyChip
中的所有其他MyChip
处于无效状态。
我遇到的问题是,在ChipSet
方法上点击ChipSet
时,我不知道从芯片小部件访问父MyChip
小部件上的方法,例如例。
有谁知道这种状态管理问题的优雅解决方案?另外,我希望子_onTap
小部件传递其值,这意味着当MyChip
设置为active且其他设置为inactive时,父部件将获得激活的MyChip
的值。 (例如MyChip
将是value
的属性)
我的主要问题是,这个MyChip
传递了这些芯片作为构造函数参数。
我知道一种模式,其中父级将其回调传递给子级(子级小部件构造函数)。但是在这种用例中,将小部件传递到ChipSet
时,我看不到该模式的适用性。
我非常感谢您的帮助。最好的问候。