0

我只想更改我的实际类扩展 InheritedWidget 更改与提供程序 ChangeNotifier

    class LoginInherited extends InheritedWidget {
      final loginBloc = LoginBloc();
      
      static LoginInherited? _instancia;
    
      factory LoginInherited({Key? key, required Widget child}) {
        if (_instancia == null) {
          _instancia = LoginInherited._internal(
            key: key,
            child: child,
          );
        }
        return _instancia!;
      }
    
      LoginInherited._internal({Key? key, required Widget child})
          : super(key: key, child: child);
    
      @override
      bool updateShouldNotify(covariant InheritedWidget oldWidget) => true;
    
      static LoginBloc of(BuildContext context) =>
          context.dependOnInheritedWidgetOfExactType<LoginInherited>()!.loginBloc;
    }
my main 


 @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
    return LoginInherited(
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'GEOFISICA',
        initialRoute: prefs.lastPage,
        routes: getRutas(),
      ),
    );
  }
the Class LoginBloc just contain with Validators class 


class LoginBloc with Validators {
  
// fun abstracta Rxdart para validar si ambos campos son correctos o coinciden
  final _emailController = BehaviorSubject<String>();
  final _passwordController = BehaviorSubject<String>();
//verifio los cambio efectuados
  Stream<String> get emailStream =>
      _emailController.stream.transform(validarEmail);

  Stream<String> get passwordStream =>
      _passwordController.stream.transform(validarPassword);
//opcion para validar dos stream
  Stream<bool> get loginRx =>
      Rx.combineLatest2(emailStream, passwordStream, (e, p) => true);

  Function(String) get changeEmail =>_emailController.sink.add;
  Function(String) get changePassword => _passwordController.sink.add;

  String get lastEmail => _emailController.value;
  String get lastPassword => _passwordController.value;

  dispose(){
    _emailController.close();
    _passwordController.close();
  }
}

我希望能够在 textController 中进行更改时执行验证并绘制屏幕 我只使用 InheritedWidget 我想要 ChangeNotfier 而不是我想在更多控制器中执行它们,因为我有很多表单并且我想以与流相同的方式验证它们,或者如果有更好的选项来验证 texfields 而无需操作任何按钮,但是在编写内容时会显示错误

4

0 回答 0