我只想更改我的实际类扩展 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 而无需操作任何按钮,但是在编写内容时会显示错误