Как решить эту ошибку: метод '[]' был вызван с нулевым значением. Получатель: null Попытка дозвониться: [] (имя)

В принципе, я хочу отображать информацию администратора в ящике раздела. Итак, я пользователь StreamBuilder. Затем я получил встроенную ошибку

StreamBuilder<DocumentSnapshot> file:///D:/Android_project/finalyearproject/lib/sidebar/AdminDrawer.dart:26:12

Вот мой класс AdminDrawer

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:finalyearproject/screen/login.dart';
import 'package:finalyearproject/service/auth.dart';




class AdminDrawer extends StatefulWidget {

  final String uid ;
  AdminDrawer({ this.uid });
  @override
  _AdminDrawerState createState() => _AdminDrawerState();
}

class _AdminDrawerState extends State<AdminDrawer> {



  final AuthService _authService = AuthService();

  @override

  Widget build(BuildContext context) {
    return StreamBuilder(     **//this line show the error.** 
      stream: Firestore.instance.collection('Admin').document(widget.uid).snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return CircularProgressIndicator();
          } else {
            return Drawer(
              child: Column(
                children: <Widget>[
                  Container(
                    width: double.infinity,
                    padding: EdgeInsets.only(top: 40),
                    color: Colors.redAccent,
                    child: Center(
                      child: Column(
                        children: <Widget>[
                          Container(
                            padding: EdgeInsets.only(top: 40),
                            width: 100,
                            height: 100,
                          ),
                          (snapshot.data['name']),
                           Text(snapshot.data['email']),
                        ],
                      ),
                    ),
                  ),
                  SizedBox(height: 5.0),
                  ListTile(
                    leading: Icon(Icons.person_pin),
                    title: Text('Profile Admin'),
                    onTap: () async {
                        **// this area I will use the nagivator push data of info admin for updating profile. This part I will pass the data to other screen//**
                    },
                  ),
                  SizedBox(height: 5.0),
                  ListTile(
                      leading: Icon(Icons.arrow_back),
                      title: Text('Logout'),
                      onTap: () async {
                        await _authService.signOut();
                        Navigator.push(context,
                            MaterialPageRoute(
                                builder: (context) => LoginScreen()));
                      }
                  ),
                ],
              ),
            );
          }
        }
    );


  }
}

Поэтому мне нужен кто-то, кто поможет мне решить эту проблему. Я что-то пропустил?


person Community    schedule 22.10.2020    source источник


Ответы (2)


Снимок равен нулю, проблема в этой строке: snapshot.data['name']

У людей была эта проблема, может быть, это поможет вам: Flutter: StreamBuilder Snapshot - No Data

person janavarro    schedule 22.10.2020

Кажется, что ваш файл snapshot.data равен нулю. Убедитесь, что у вас есть данные. И я предполагаю, что ваш файл snapshot.data ['name'] не является виджетом. Итак, вы должны прокомментировать эту строку. Вы можете использовать его в таком виджете:

                      Container(
                        padding: EdgeInsets.only(top: 40),
                        width: 100,
                        height: 100,
                      ),
                      // Comment this line.
                      //(snapshot.data['name']),
                      Text(snapshot.data['name']),
                      Text(snapshot.data['email']),
person Akif    schedule 22.10.2020