PersonModalSelect function

void PersonModalSelect(
  1. dynamic context, {
  2. required String entity,
  3. required Function callback,
  4. required Map personsMap,
  5. required DefaultProvider defaultProvider,
  6. required ApiProvider apiProvider,
  7. bool? deletable,
})

Implementation

void PersonModalSelect(
  context, {
    required String entity,
    required Function callback,
    required Map personsMap,
    required DefaultProvider defaultProvider,
    required ApiProvider apiProvider,
    bool? deletable
  }) {

  final language = Language();
  final appIcons = AppIcons();
  final appcolors = AppColors();
  final colorScheme = Theme.of(context).colorScheme;
  bool isNew = false;


  void onCallback(Person? person){
    callback(person);
    Navigator.of(context).pop();
  }

  Widget child = StatefulBuilder(
    builder: (BuildContext context, StateSetter setStateModal ) {

    return Scaffold(
      appBar: isNew ? null : CustomAppBar(
        title: language.translateUpperCase(entity),
        subtitle: 'Seleccione o agregue uno',
        rightButtons: [
          if(deletable == true)
          AppBarButtonText(
            text: 'BORRAR',
            textColor: appcolors.error,
            onPressed: ()=>onCallback(null),
          ),
          AppBarButtonText(
            text: 'NUEVO',
            onPressed: ()=>setStateModal(()=> isNew = true),
            textColor: colorScheme.primary,
          ),
        ],
      ),

      body: isNew
      ? PersonCreate(
        entity: entity,
        currentPerson: Person(),
        permissions: {},
        defaultProvider: defaultProvider,
        apiProvider: apiProvider,
        callback: (action, Person person)=>onCallback(person),
      )
      : PersonsList(
        personsMap: personsMap,
        icon: appIcons.getIconByName('${entity}s'),
        callbackItem: (Person person)=>onCallback(person),
      )

    );

    }
  );

  customAutoDialog(context, child);
}