import 'package:flutter/material.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart'; import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/utils/icons.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; Future showEntityActionsDialog( {@required BuildContext context, @required List entities, @required UserCompanyEntity userCompany, @required Function(BuildContext, List, EntityAction) onEntityAction, ClientEntity client, bool multiselect = false}) async { if (entities == null) { return; } final mainContext = context; showDialog( context: context, builder: (BuildContext dialogContext) { final actions = []; actions.addAll(entities[0] .getActions( userCompany: userCompany, includeEdit: true, client: client, multiselect: multiselect) .map((entityAction) { if (entityAction == null) { return Divider(); } else { return EntityActionListTile( entities: entities, entityAction: entityAction, mainContext: mainContext, onEntityAction: onEntityAction, ); } }).toList()); return SimpleDialog(children: actions); }); } class EntityActionListTile extends StatelessWidget { const EntityActionListTile( {this.entities, this.entityAction, this.onEntityAction, this.mainContext}); final List entities; final EntityAction entityAction; final BuildContext mainContext; final Function(BuildContext, List, EntityAction) onEntityAction; @override Widget build(BuildContext context) { final localization = AppLocalization.of(context); return ListTile( leading: Icon(getEntityActionIcon(entityAction)), title: Text(localization.lookup(entityAction.toString())), onTap: () { Navigator.of(context).pop(); onEntityAction(context, entities, entityAction); }, ); } }