Невозможно запросить документ из вложенной коллекции из коллекции пожарного магазина - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь запросить конкретный документ, вложенный в collection'users / document'useruid '/ collection'items' / 'document'documentid'. я продолжаю получать нулевое значение, и оно выдает ошибку

   try {
      final user = await _auth.currentUser();
      if (user != null) {
        _loggedInUser = user;
        _userUid = _loggedInUser.uid;
        setState(() {
          // showSpinner = false;
          print(_userUid);
        });
      }
    } catch (e) {
      print(e);
    }
  }

  void getItemDetail() async {
    await _firestore
        .collection('users')
        .document(_userUid)
        .collection('items')
        .document(documentID)
        .get()
        .then((DocumentSnapshot snapshot) {
      itemDetails = snapshot.data;
      itemName = snapshot['item_name'];
      itemNum = snapshot['item_num'.toString()];
      itemDesc = snapshot['item_desc'];
      itemLoc = snapshot['item_location'];
      itemQty = snapshot['item_qty'.toString()];
      itemUom = snapshot['item_uom'];
      itemMfr = snapshot['item_mfr'];
      itemStock = snapshot['out_of_stock'];
      lastEditDate = snapshot['edit_date'];
      createDate = snapshot['create_date'];
      imageURL = snapshot['image_url'];

      setState(() {
        dateCreated =
            new DateFormat.yMMMMd("en_US").format(createDate.toDate());
        itemDetails = snapshot.data;
        showSpinner = false;
        stockCheck();
        editDateCheck();
      });
    });
  }
 @override
  void initState() {
    testApp();
    getCurrentUser();
    getItemDetail();
    //   editDateCheck();
    super.initState();
  }
flutter error output:
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
Receiver: null
Tried calling: []("item_name")
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
#1      DocumentSnapshot.[] (package:cloud_firestore/src/document_snapshot.dart:29:42)
#2      _ItemDetailScreenState.getItemDetail.<anonymous closure> (package:simmanager/screens/item_detail_screen.dart:77:26)
#3      _rootRunUnary (dart:async/zone.dart:1132:38)
#4      _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#5      _FutureListener.handleValue (dart:async/future_impl.dart:137:18)
#6      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:678:45)
#7      Future._propagateToListeners (dart:async/future_impl.dart:707:32)
#8      Future._completeWithValue (dart:async/future_impl.dart:522:5)
#9      _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:30:15)
#10     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:288:13)
#<…>

документация передается из навигатора на предыдущей странице. Я напечатал (userid, documentmentid "все значения правильно распечатать.

1 Ответ

0 голосов
/ 12 ноября 2019

Вы всегда должны проверять, есть ли у вашего снимка какие-либо данные или иметь нулевое значение,

if(snapshot!=null)

Тогда вам всегда следует проверять, имеют ли данные внутри снимка нулевое значение или нет,

if(snapshot.data!=null)

Кроме того, в вашем случае вы называете данные о нулевом объекте.

Я думаю, вам нужно заменить снимок ['item_name'] на snapshot.data['item_name'] для всего элемента.

Вы по ошибке вызываете snapshot ["your_field"] вместо snapshot.data ["your_field"], которая вызывает проблему.

Кроме того, всегда рекомендуется проверять нулевую безопасность при разборе данных из сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...