首页 > 解决方案 > 颤振:NoSuchMethodError:方法'[]'在null上被调用。接收者:null 尝试调用:[]("User")

问题描述

我需要帮助

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。(package: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)

标签: firebaseflutter

解决方案


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

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

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

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

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


推荐阅读