Files
chat-flutter/lib/component/component_popup.dart
2025-09-12 20:35:12 +08:00

62 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:demo/config/app_fonts.dart';
// 顶部弹出组件
class ComponentPopup extends StatelessWidget {
final List<PopupModel> dataList;
const ComponentPopup({
super.key,
required this.dataList,
});
@override
Widget build(BuildContext context) {
List<PopupMenuItem> itemList = [];
for (var data in dataList) {
itemList.add(_popupItem(data));
}
return PopupMenuButton(
color: Colors.white,
offset: const Offset(0, 50),
icon: const Icon(
AppFonts.e625,
),
itemBuilder: (BuildContext context) {
return itemList;
},
);
}
// 顶部add加号详情
_popupItem(PopupModel popupModel) {
return PopupMenuItem(
onTap: popupModel.onTap,
child: Column(
children: [
Row(
children: [
popupModel.icon,
const SizedBox(width: 10),
Text(
popupModel.label,
style: TextStyle(fontSize: 16, color: Colors.grey[800]),
),
],
),
],
),
);
}
}
class PopupModel {
String label;
Icon icon;
VoidCallback? onTap;
PopupModel(
this.label,
this.icon, {
required this.onTap,
});
}