/* * @Author: 一凨 * @Date: 2018-12-22 21:01:51 * @Last Modified by: 一凨 * @Last Modified time: 2018-12-27 15:37:04 */ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; class CheckedPopupMenuItemDemo extends StatefulWidget { _CheckedPopupMenuItemDemoState createState() => _CheckedPopupMenuItemDemoState(); } class _CheckedPopupMenuItemDemoState extends State { List _checkedValues; final String _checkedValue1 = 'One'; final String _checkedValue2 = 'Two'; final String _checkedValue3 = 'Free'; final String _checkedValue4 = 'Four'; @override void initState() { super.initState(); _checkedValues = [_checkedValue3]; } void showInSnackBar(String value){ Fluttertoast.showToast( msg: value, toastLength: Toast.LENGTH_SHORT, gravity: ToastGravity.CENTER, timeInSecForIos: 1, backgroundColor: Colors.grey, textColor: Colors.white ); } bool isChecked(String value) => _checkedValues.contains(value); void showCheckedMenuSelections(String value){ if(_checkedValues.contains(value)){ _checkedValues.remove(value); }else{ _checkedValues.add(value); } showInSnackBar('Checked $_checkedValues'); } @override Widget build(BuildContext context) { return Container( color: Theme.of(context).primaryColor, child: ListTile( title: const Text('CheckedPopupMenuItem Demo',style: TextStyle(color: Colors.white),), trailing: PopupMenuButton( padding: EdgeInsets.zero, onSelected: showCheckedMenuSelections, icon: Icon(Icons.menu,color: Colors.white,), itemBuilder: (BuildContext context)=>>[ CheckedPopupMenuItem( value: _checkedValue1, checked: isChecked(_checkedValue1), child: Text(_checkedValue1) ), CheckedPopupMenuItem( value: _checkedValue2, enabled: false, checked: isChecked(_checkedValue2), child: Text(_checkedValue2) ), CheckedPopupMenuItem( value: _checkedValue3, checked: isChecked(_checkedValue3), child: Text(_checkedValue3) ), CheckedPopupMenuItem( value: _checkedValue4, checked: isChecked(_checkedValue4), child: Text(_checkedValue4) ) ], ), ), ); } }