【问题标题】:Flutter Bloc; 1 positional argument(s) expected, but 0 found颤振集团;预期 1 个位置参数,但找到 0 个
【发布时间】:2021-09-17 06:33:56
【问题描述】:

颤振版本:2.1.0

Flutter Bloc 版本:^7.0.1

飞镖:2.13.0

出现此错误:应有 1 个位置参数,但找到了 0 个。尝试添加缺少的 arguments.dart(not_enough_positional_arguments)。

有什么不对的地方

我的侧边栏布局出错的地方:

 body: BlocProvider<NavigationBloc>(
        create: (context) => NavigationBloc(),
        child: Stack(
          children: [
            BlocBuilder<NavigationBloc, NavigationStates>(
                builder: (context, NavigationState) {
              return NavigationState as Widget;
            }),
            SideBar(),
          ],
        ),
      ),

我的 Bloc 导航文件:


import '/Pages/DeviceLocation/DeviceLocation.dart';

import '/Pages/Devices/DeviceLanding.dart';

import '../../LandingScreen/components/body.dart';
import '../../SensorScreen/charts/GasChart.dart';
import '../../SensorScreen/charts/HumChart.dart';
import '../../SensorScreen/charts/MoisChart.dart';
import '../../SensorScreen/charts/NurChart.dart';
import '../../SensorScreen/charts/PhChart.dart';
import '../../SensorScreen/charts/TemChart.dart';
import '../../SensorScreen/charts/chartComponents/NurCard.dart';
import 'package:bloc/bloc.dart';

enum NavigationEvents {
  // DashboardClickEvent,
  LandingScreenBodyClickEvent,
  TemChartClickEvent,
  HumChartClickEvent,
  MoisChartClickEvent,
  PhChartClickEvent,
  NurChartClickEvent,
  GasChartClickEvent,
  DevicesClickEvent,
  DevicesLocationClickEvent,
  AccountClickEvent,
  SettingsClickEvent
}

abstract class NavigationStates {}

class NavigationBloc extends Bloc<NavigationEvents, NavigationStates> {
  NavigationBloc(NavigationStates initialState) : super(initialState);

  @override
  NavigationStates get initialState => LandingScreenBody();

  @override
  Stream<NavigationStates> mapEventToState(NavigationEvents event) async* {
    switch (event) {
      case NavigationEvents.LandingScreenBodyClickEvent:
        yield LandingScreenBody();
        break;
      case NavigationEvents.TemChartClickEvent:
        yield TemChart();
        break;
      case NavigationEvents.HumChartClickEvent:
        yield HumChart();
        break;
      case NavigationEvents.MoisChartClickEvent:
        yield MoisChart();
        break;
      case NavigationEvents.PhChartClickEvent:
        yield PhChart();
        break;
      case NavigationEvents.NurChartClickEvent:
        yield NurChart();
        break;
      case NavigationEvents.GasChartClickEvent:
        yield GasChart();
        break;
      case NavigationEvents.DevicesClickEvent:
        yield DeviceLanding();
        break;
      case NavigationEvents.DevicesLocationClickEvent:
        yield DevicesLocation();
        break;
    }
  }
}

我在做什么?

【问题讨论】:

    标签: flutter bloc flutter-navigation


    【解决方案1】:

    您不必将状态传递给 bloc 构造函数,这应该可以工作

    
    NavigationBloc() : super(LandingScreenBody());
    
    

    在 flutter_bloc 7.0.0 中,不再有 initialState getter,所以你也必须删除它

    【讨论】:

    • 你的意思是,我应该删除:` avigationBloc(NavigationStates initialState) : super(initialState); @override NavigationStates 获取初始状态 => LandingScreenBody(); ` 并将其替换为 ` NavigationBloc() : super(LandingScreenBody());? `
    • @isofttech 没错。
    • 查看迁移指南bloclibrary.dev/#/migration 5.0.0 版
    • 非常感谢,它对我有用。在更新 flutter_bloc 和许多其他依赖项后我遇到了问题,我无法意识到问题的根源在哪里。现在我知道了。
    • @kokserek 欢迎您
    猜你喜欢
    • 2021-06-04
    • 2020-04-20
    • 2021-12-18
    • 2021-07-27
    • 2021-05-22
    • 2022-07-25
    • 2021-12-11
    • 2021-09-21
    • 2022-07-20
    相关资源
    最近更新 更多