首页 > 解决方案 > 如何使用可选择的块声明提供程序,因此将同一页面与几个可能的块之一重用

问题描述

我有一个带有标签的页面,但起始页面的标签和一些内容因用户的角色而异。所有逻辑和选项卡导航都由特定于用户角色的块处理。

现在我想知道如何用多个块声明提供者,其中只选择一个。当然,我也可以使用多块提供者,但是我会同时打开所有实例。我试过了

BlocProvider<(roleDisplayed == 0 ? FirstBloc : SecondBloc)>但这会抛出The operator '<' isn't defined for the type 'Type'

你们知道如何声明这个吗?

标签: flutterblocflutter-provider

解决方案


你有几乎正确的语法。它会更像这样:

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);
    }
  }
}

类似的东西。


推荐阅读