【问题标题】:flutter: NoSuchMethodError: The method '[]' was called on null. Receiver: null Tried calling: []("User")颤振:NoSuchMethodError:方法'[]'在null上被调用。接收者:null 尝试调用:[]("User")
【发布时间】:2021-09-19 15:20:06
【问题描述】:

我需要帮助

Future<void> getGenderUser(
  {User firebaseUser, String token, BuildContext context}) async {
await Config.initializeClient(token)
    .value
    .query(QueryOptions(
        document: gql(Queries.getGender),
        variables: <String, dynamic>{'id': firebaseUser.uid}))
    .then((value) {
  Navigator.of(context).pop();
  if (value.data['User'][0]['gender'] == null) {
    Navigator.of(context).pushNamed(Routes.welcome);
  } else {
    Navigator.of(context)
        .pushNamed(Routes.homeScreen, arguments: const HomeScreen());
  }
});
}

错误

flutter: NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("User")
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: 0
#0      List.[] (dart:core-patch/growable_array.dart:254:60)
#1      OptionLogin.getGenderUser.<anonymous closure>(package:flutter_habit_run/feature/walkthrough/widget/option_login.dart:34:29)
#2      _rootRunUnary (dart:async/zone.dart:1362:47)
#3      _CustomZone.runUnary (dart:async/zone.dart:1265:19)
#4      OptionLogin.getGenderUser (package:flutter_habit_run/feature/walkthrough/widget/option_login.dart:27:5)
#5 OptionLogin.signIn。 (包:flutter_habit_run/feature/walkthrough/widget/option_login.dart:51:11) #6 OptionLogin.signIn (package:flutter_habit_run/feature/walkthrough/widget/option_login.dart:47:7)

【问题讨论】:

  • 在最后一个 if 语句之前,print(value);print(value.data);print(value.data['User']); 其中一个为空。

标签: firebase flutter


【解决方案1】:

没有你的源代码行号...

if (value.data['User'][0]['gender'] == null) {

value.data['User'] 可能返回一个空列表。即存在一个列表,但列表中没有用户或项目。当您要求第一个项目 [0] 时,没有要返回的项目。您可以将此检查添加到您的 if...

if (value.data['User'].isEmpty || value.data['User'][0]['gender'] == null) {

您可能还需要检查空列表是否是错误条件的结果。

【讨论】:

    【解决方案2】:

    首先检查您的值是否不为空,如果不是,请尝试通过添加as User 将右侧代码转换为用户,这可能会有所帮助并在错误发生任何更改时进行评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多