繁体   English   中英

Flutter:类型“Null”不是“String”类型的子类型错误

[英]Flutter: type 'Null' is not a subtype of type 'String' Error

我正在 Flutter 上制作 Instagram 克隆应用程序。 但是当我进入个人资料屏幕时,屏幕上出现红色屏幕背景和此文本(类型“Null”不是“String”类型错误的子类型)。 我该如何解决这个问题?

屏幕

这是我的 global.variable.dart 文件

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:bagisla2/screens/add_post_screen.dart';
import 'package:bagisla2/screens/feed_screen.dart';
import 'package:bagisla2/screens/profile_screen.dart';
import 'package:bagisla2/screens/search_screen.dart';

const webScreenSize = 600;

List<Widget> homeScreenItems = [
  const FeedScreen(),
  const SearchScreen(),
  const AddPostScreen(),
  const Text('notifications'),
  ProfileScreen(
    uid: FirebaseAuth.instance.currentUser!.uid,
  ),
];

您刚刚修复的 profile_screen.dart 中的错误

getData() async {
  setState(() {
    isLoading = true;
  });
try {
  var userSnap = await FirebaseFirestore.instance
      .collection('users')
      .doc(widget.uid)
      .get();

  // get post lENGTH
  var postSnap = await FirebaseFirestore.instance
      .collection('posts')
      .where('uid', isEqualTo: FirebaseAuth.instance.currentUser!.uid)
      .get();

  postLen = postSnap.docs.length;
  userData = userSnap.data()!;
  followers = userSnap.data()!['followers'].length;
  following = userSnap.data()!['following'].length;
  isFollowing = userSnap
      .data()!['followers']
      .contains(FirebaseAuth.instance.currentUser!.uid);
  setState(() {});
} catch (e) {
  showSnackBar(
    context,
    e.toString(),
  );
}
setState(() {
  isLoading = false;
});}

getData() async {
try {
  var userSnap = await FirebaseFirestore.instance
      .collection('users')
      .doc(widget.uid)
      .get();

  // get post lENGTH
  var postSnap = await FirebaseFirestore.instance
      .collection('posts')
      .where('uid', isEqualTo: FirebaseAuth.instance.currentUser!.uid)
      .get();

  postLen = postSnap.docs.length;
  userData = userSnap.data()!;
  followers = userSnap.data()!['followers'].length;
  following = userSnap.data()!['following'].length;
  isFollowing = userSnap
      .data()!['followers']
      .contains(FirebaseAuth.instance.currentUser!.uid);
  setState(() {
      isLoading = true;
  });
} catch (e) {
  showSnackBar(
    context,
    e.toString(),
  );
}}

之前做一个空检查:

List<Widget> homeScreenItems = [
  const FeedScreen(),
  const SearchScreen(),
  const AddPostScreen(),
  const Text('notifications'),
  if (FirebaseAuth.instance.currentUser?.uid != null)
    ProfileScreen(
      uid: FirebaseAuth.instance.currentUser!.uid,
    ),
];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM