У меня есть текстовое поле, обернутое в StreamBuilder и привязанное к потоку, поток проходит через валидатор, когда данные добавляются в приемник.Есть кнопка, которая добавляет значение текстового поля в приемник, и любая ошибка снимка отображается на InputDecoration.
Текстовое поле находится внутри виджета с контролем состояния, который является компонентом родительского виджета с контролем состояния.Блок инициализируется вне компоновщика виджетов.
Я пытаюсь сбросить поток, чтобы ошибка моментального снимка исчезла, когда дочерний виджет анимируется в и из поля зрения.В настоящее время ошибка сохраняется после перестройки дочернего виджета.Есть идеи, как этого добиться?
class Parent extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return ParentState();
}
}
class ParentState extends State<Parent> with TickerProviderStateMixin {
@override
Widget build(BuildContext context) {
return Container(
child: Stack(
children: <Widget>[
child(),
// other forms
],
)
);
}
}
class Child extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return ChildState();
}
}
class ChildState extends State<Child> {
Bloc bloc;
@override
void initState() {
super.initState();
bloc = Bloc();
}
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: appBloc,
child: Container(
child: StreamBuilder(
stream: bloc.input,
builder: (context, snapshot) {
return TextFormField(
decoration: InputDecoration(
errorText: snapshot.error,
),
);
}
),
),
);
}
}