//用于刷新DialogContent import 'package:chat/data/constants.dart'; import 'package:chat/generated/i18n.dart'; import 'package:flutter/material.dart'; import 'package:oktoast/oktoast.dart'; class MyDialogContent extends StatefulWidget { final dataMap; final keyList; @required final mostNum; MyDialogContent({Key key, this.dataMap, this.keyList, this.mostNum}) : super(key: key); _MyDialogContentState createState() => _MyDialogContentState(); } class _MyDialogContentState extends State { @override Widget build(BuildContext context) { Widget buildItem(key, str) { Text text = new Text(str, textScaleFactor: 1.0, style: TextStyle( fontSize: 14, color: widget.keyList.contains(key) ? Constants.BlueTextColor : Constants.BlackTextColor)); return InkWell( highlightColor: Colors.transparent, radius: 0.0, child: Container( decoration: BoxDecoration( border: Border(bottom: Constants.GreyBorderSide), ), height: 50, alignment: Alignment.center, child: text), onTap: () { setState(() { if (widget.keyList.contains(key)) { widget.keyList.remove(key); } else { if (widget.keyList.length >= widget.mostNum) { showToast(I18n.of(context) .most .replaceFirst('/s1', widget.mostNum.toString())); return; } widget.keyList.add(key); } }); }, ); } List buildDateprogram() { List result = new List(); widget.dataMap.forEach((k, v) => result.add(buildItem(k, v))); return result; } return new Container( decoration: BoxDecoration( border: Border(top: BorderSide(color: Colors.grey, width: 1)), ), height: 230.0, // Change as per your requirement width: 350.0, // Change as per your requirement child: ListView( children: buildDateprogram(), ), ); } }