iOS风格的分段控件。显示水平列表中子项映射中提供的小组件。 用于在多个互斥选项之间进行选择。 当选择分段控件中的一个选项时,将不再选择分段控件中的其他选项。
分段控件可以将任何Widget作为其Map of Child中的值之一。 类型T是用于标识每个小部件并确定选择哪个小部件的键的类型。 根据Map类的要求,键必须是一致的类型,并且必须具有可比性。 键的排序将确定分段控件中小部件的顺序。
当分段控件的状态发生更改时,窗口小部件将调用onValueChanged回调。 在onValueChanged回调中返回与新选择的窗口小部件关联的Map的Key。 通常,使用分段控件的窗口小部件将侦听onValueChanged回调并使用新的groupValue重建分段控件以更新当前选择的选项。
class CupertinoSegmentedControlApp extends StatelessWidget{
@override
Widget build(BuildContext context) => CupertinoApp(
home: _HomePage(),
);
}
class _HomePage extends StatelessWidget{
@override
Widget build(BuildContext context) => CupertinoPageScaffold(
child: Center(child:
CupertinoSegmentedControl<int>(children: {
1:Padding(padding: EdgeInsets.all(5.0),child: Text("Child 1"),),
2:Padding(padding: EdgeInsets.all(5.0),child: Text("Child 2"),),
3:Padding(padding: EdgeInsets.all(5.0),child: Text("Child 3"),),
4:Padding(padding: EdgeInsets.all(5.0),child: Text("Child 4"),),
},
onValueChanged: (value){
print("the value changed ! $value");
},
),)
) ;
}
复制代码
其构造函数如下:
CupertinoSegmentedControl({
Key key,
@required this.children,
@required this.onValueChanged,
this.groupValue,
this.unselectedColor = CupertinoColors.white,
this.selectedColor = CupertinoColors.activeBlue,
this.borderColor = CupertinoColors.activeBlue,
this.pressedColor = const Color(0x33007AFF),
})
复制代码
Map<T, Widget> children
分段控件中的标识键和相应的窗口小部件值,其中的T为onValueChanged
的回掉的值。
T groupValue
当前选定的窗口小部件的标识符。如果此属性为null,则最初不会选择任何窗口小部件。
ValueChanged<T> onValueChanged
选中的回掉。
typedef ValueChanged = void Function(T value);
unselectedColor
未选中的背景色。selectedColor
选中的背景色。borderColor
颜色框的颜色。pressedColor
按压时的颜色。