我目前有问题,我的第一个块从0,它应该抛出一个错误,一旦一个数字达到一定的数字,但我注意到,通过测试,该事件是没有收到任何数据在所有,我不知道我做错了什么。
我可以确认事件正在被触发,在更改文本字段时触发事件。
我不知道这是否重要,但如果尝试int.parse它,我会收到null。
带有应发送到事件的字符串的小部件。
class Daytextfield extends StatelessWidget {
Daytextfield({
Key? key,
required this.digits,
required this.hint,
}) : super(key: key);
final int digits;
final String hint;
final String texto = '';
@override
Widget build(BuildContext context) {
final TextEditingController dias = TextEditingController(text: texto);
Color color = Colors.black;
return BlocConsumer<DaysBloc, DaysState>(
listener: (context, state) {
if(state is DaysIncorrectState){
color = Colors.red;
} else if (state is DaysCorrectState){
color = Colors.green;
}
},
builder: (context, state) {
return TextFormField(
onChanged: (value) {
BlocProvider.of<DaysBloc>(context).add(DaysChangedEvent(texto: texto));
print(state);
// var ree = int.tryParse(texto);
print(texto);
},
controller: dias,
keyboardType: TextInputType.number,
textInputAction: TextInputAction.next,
textAlign: TextAlign.center,
cursorColor: Color.fromARGB(148, 66, 63, 63),
style: Theme.of(context)
.textTheme
.headline1!
.copyWith(fontSize: 20, color: color),
块
第一个
2条答案
按热度按时间ecfsfe2w1#
替换
BlocProvider.of<DaysBloc>(context).add(DaysChangedEvent(texto: texto));
与
BlocProvider.of<DaysBloc>(context).add(DaysChangedEvent(texto: value));
texto
是最终的空字符串,因此您可能每次都将空字符串作为事件接收。j8ag8udp2#
在这一行
将
(texto:texto)
替换为(texto:value)
看起来像这样
这样应该可以了。