flutter - 如何使用可选择的块声明提供程序,因此将同一页面与几个可能的块之一重用
问题描述
我有一个带有标签的页面,但起始页面的标签和一些内容因用户的角色而异。所有逻辑和选项卡导航都由特定于用户角色的块处理。
现在我想知道如何用多个块声明提供者,其中只选择一个。当然,我也可以使用多块提供者,但是我会同时打开所有实例。我试过了
BlocProvider<(roleDisplayed == 0 ? FirstBloc : SecondBloc)>
但这会抛出The operator '<' isn't defined for the type 'Type'
。
你们知道如何声明这个吗?
解决方案
你有几乎正确的语法。它会更像这样:
roleDisplayed == 0
? BlocProdvider<FirstBloc>()
: BlocProvider<SecondBloc>()
注意:您可以使用 switch 语句达到相同的效果。
您可以使用一种方法在不同的文件中创建 bloc,然后在需要的 UI 中调用它。
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../bloc/bloc/first_bloc.dart';
class ChooseBloc {
getBloc(int roleDisplayed, BuildContext context) {
if (roleDisplayed == 0) {
final firstBloc = BlocProvider.of<FirstBloc>(context);
return BlocBuilder(builder: //builder code here);
}
}
}
类似的东西。
推荐阅读
- java - 有没有办法将方法包含在表单布局的响应步骤中
- python - 为什么我在树莓派上通过串口接收到无法读取的数据?
- java - 如何编辑生成的字符串?
- javascript - 反向地理编码被阻止
- r - 如何在使用 bind_rows() 之前删除列表中的空数据框?
- jquery - 匹配来自不同列表的相同字符串
- java - 错误:org.postgresql.util.PSQLException:列索引超出范围:3,列数:2。建议?
- python - 同情 Numpy 冲突
- excel - 带日期的 Excel SUMIF
- sql - 在 SQL Server 中创建具有多个聚合函数的动态 PIVOT 表