controllerAddTemplate function

dynamic controllerAddTemplate()

Implementation

controllerAddTemplate() {
  return """
import 'dart:io';

import 'package:@packageName/helpers/state_util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import '../data/@filenameModel.dart';
import '../data/@filename_repository.dart';
import '../views/@filename_add_view.dart';

import 'package:path/path.dart';
import 'package:dio/dio.dart' as dio;

import '../views/@filename_detail_view.dart';
import '../views/@filename_view.dart';

class @classNameAddController extends State<@classNameAddView> {
  static late @classNameAddController instance;
  late @classNameAddView view;

  final formKey = GlobalKey<FormState>();

  bool isEdit = false;
  int? id;
  @modelName? @varName;

  @varInput

  @override
  Widget build(BuildContext context) => widget.build(context, this);

  @override
  void initState() {
    instance = this;
    if (widget.id != null) {
      id = widget.id;
      isEdit = true;
      getData();
    }
    super.initState();
  }

  setId(int v) {
    setState(() {
      id = v;
    });
    getData();
  }

  getData() {
    EasyLoading.show();
    @classNameRepository().getDetail(
      id!,
      onSuccess: (respon) {
        EasyLoading.dismiss();
        setState(() {
          @varName = respon.data as @modelName;
        });
        setData();
      },
      onError: (err) {
        EasyLoading.dismiss();
        EasyLoading.showError(err.toString());
      },
    );
  }

  @varImageInput

  save() async {
    bool isValid = formKey.currentState!.validate();
    if (!isValid) return;

    if (!isValid) return;
    formKey.currentState!.save();

    final params = <String, dynamic>{
      @varParameters
    };

    @varUploadFile

    String url = '@varApi';
    if (isEdit) {
      params['_method'] = 'put';
      url += '/\$id';
    }

    EasyLoading.show();
    final formData = dio.FormData.fromMap(params);
    @classNameRepository().save(
      url,
      formData,
      onSuccess: (respon) {
        EasyLoading.dismiss();
        EasyLoading.showSuccess(respon.message!);

        Future.delayed(const Duration(seconds: 1), () {
          if (isEdit) {
            Get.off(@classNameDetailView(
              id: id!,
            ));
          } else {
            Get.off(const @classNameView());
          }
        });
      },
      onError: (error) {
        EasyLoading.dismiss();
        EasyLoading.showError(error.toString());
      },
    );
  }

  void setData() {
    if (@varName != null) {
      @varSetText
    }
  }

  @override
  void dispose() => super.dispose();
}
""";
}