场景
我正在尝试在Flutter应用中使用flutter_bloc进行状态管理。在我的应用程序中,我有一个按钮,只有在输入的电子邮件有效时才会出现。为此,我有一个_isEmailValid
变量初始设置为 false,一旦输入的电子邮件有效,它就会更新为 true。
我想显示的按钮是 Package 在BlocBuilder
中,如下所示:
BlocBuilder<ShowButtonBloc, ShowButtonState>(
builder: buildSubmitButton,
),
其中buildSubmitButton
如下:
Widget buildSubmitButton(BuildContext context, ShowButtonState state) {
if (!_isEmailValid) {
return const SizeBox();
} else {
return GradientButton(
onTap: () {
// Navigation logic
},
text: labels[31]["labelsText"],
);
}
}
现在,GradientButton
是一个自定义小部件,它接受一个名为text
的String参数。当我传递一个字符串,如text: "Proceed"
,应用程序运行正常,但是,当我试图从不同的Map变量分配一个字符串时,我得到错误:
在构建BlocBuilder〈ShowButtonBloc,ShowButtonState〉时抛出以下_TypeError(脏,依赖关系:[_InheritedProviderScope〈ShowButtonBloc?〉],state:_BlocBuilderBaseState〈ShowButtonBloc,ShowButtonState〉#e4f0a):类型“Null”不是类型“String”的子类型
这里,标签是final List<Map<String, dynamic>>
和labels[31]["labelsText"] = "Proceed"
。业务要求我现在将文本存储在Map中,然后从API中获取这些内容,这就是为什么不能仅仅将静态文本分配给按钮。
以下是我的Bloc看起来像:
- show_button_state。 dart *
class ShowButtonState {
final bool show;
const ShowButtonState({
required this.show,
});
}
- show_button_event。 dart *
class ShowButtonEvent {
final bool show;
const ShowButtonEvent({
required this.show,
});
}
- show_button_bloc。 dart *
class ShowButtonBloc extends Bloc<ShowButtonEvent, ShowButtonState> {
ShowButtonBloc()
: super(
const ShowButtonState(show: false),
) {
on<ShowButtonEvent>(
(event, emit) => emit(
ShowButtonState(show: event.show),
),
);
}
}
申请
我想知道为什么当我从变量传递字符串时会出现错误,以及如何解决这个问题。
1条答案
按热度按时间55ooxyrt1#
这似乎和你的血液控制中心没什么关系
并不存在
因为你没有发布那部分,很难再帮助你了。确保它引用了某个存在的内容。* * 是否有32个标签(记住,第一个标签的索引为0)?第32个 * 有 * 一个属性“labelsText”设置为文本吗?也检查一下错别字。