CheckedPopupMenuItem可勾选的弹出菜单,常常与PopupMenuButton,作为PopupMenuButton构造方法的元素:
01 | class MyApp extends StatelessWidget { |
02 | const MyApp({Key key}) : super (key: key); |
05 | Widget build(BuildContext context) { |
07 | title: 'CheckedPopupMenuItem可勾选的弹出菜单' , |
10 | title: Text( 'CheckedPopupMenuItem可勾选的弹出菜单' ), |
20 | class DemoPage extends StatefulWidget { |
21 | DemoPage({Key key}) : super (key: key); |
24 | _DemoPageState createState() => _DemoPageState(); |
27 | class _DemoPageState extends State<DemoPage> { |
28 | List<String> _checkedValues; |
30 | final String _checkedValue1 = '1' ; |
31 | final String _checkedValue2 = '2' ; |
32 | final String _checkedValue3 = '3' ; |
33 | final String _checkedValue4 = '4' ; |
38 | _checkedValues = <String>[_checkedValue1]; |
42 | bool isChecked(String value) => _checkedValues.contains(value); |
45 | void showCheckedMenuSelections(String value) { |
46 | if (_checkedValues.contains(value)) { |
47 | _checkedValues.remove(value); |
49 | _checkedValues.add(value); |
54 | Widget build(BuildContext context) { |
56 | color: Theme.of(context).primaryColor, |
60 | style: TextStyle(color: Colors.white), |
62 | trailing: PopupMenuButton<String>( |
63 | padding: EdgeInsets.zero, |
64 | onSelected: showCheckedMenuSelections, |
69 | itemBuilder: (BuildContext context) => [ |
70 | CheckedPopupMenuItem<String>( |
71 | value: _checkedValue1, |
73 | checked: isChecked(_checkedValue1), |
74 | child: Text(_checkedValue1), |
76 | CheckedPopupMenuItem<String>( |
77 | value: _checkedValue2, |
80 | checked: isChecked(_checkedValue2), |
81 | child: Text(_checkedValue2), |
83 | CheckedPopupMenuItem<String>( |
84 | value: _checkedValue3, |
85 | checked: isChecked(_checkedValue3), |
86 | child: Text(_checkedValue3), |
88 | CheckedPopupMenuItem<String>( |
89 | value: _checkedValue4, |
90 | checked: isChecked(_checkedValue4), |
91 | child: Text(_checkedValue4), |
部分素材资源来源网站,本站提供免费下载,如有侵权请联系站长马上删除!