BeforeValueChanged<T> typedef

BeforeValueChanged<T> = Future<bool> Function(FormeFieldState<T> field, T value, bool isValid())

if dropdown is changing to a new value , this function is used to check whether new value can be changed or not

isValid whether current checking is valid or not. in some cases , if widget is disposed before checking completed FormeFieldState.didChange will never be called , some logic in FormeField.onStatusChanged or Forme.onFieldStatusChanged will never be executed , to prevent these , we need to do our logic in checking eg:

    onValueChanged:(f,v) {
    beforeValueChanged:(f,v,isValid) async{
      final bool change = await check(f,v);
      if(change) {
        //checking is valid but field is disposed..
        if(isValid() && !f.controller.mounted){
      return change

 Future void logic(FormeFieldController field,dynamic value) async{



typedef BeforeValueChanged<T> = Future<bool> Function(
    FormeFieldState<T> field, T value, bool Function() isValid);