【发布时间】:2022-02-02 13:57:27
【问题描述】:
- 无法定义“const”构造函数,因为字段“currentUser” 用一个非常量值初始化。
- 无法为具有非最终字段的类定义 const 构造函数。
- 参数类型 'Stream
>>' 不能 分配给参数类型'Widget Function(BuildContext, AsyncSnapshot >)'。 - 已指定命名参数“builder”的参数。
- 正文可能正常完成,导致返回“null”,但 返回类型可能是不可为空的类型。
people.dart
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
class People extends StatelessWidget {
const People({Key? key}) : super(key: key);
var currentUser = FirebaseAuth.instance.currentUser!.uid;
void callChatScreen(String name, String uid){
}
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
builder: FirebaseFirestore.instance
.collection("users")
.where('uid',isNotEqualTo: currentUser)
.snapshots(),
builder:(BuildContext,AsyncSnapshot<QuerySnapshot>snapshot){
if(snapshot.hasError){
return Center(
child: Text("Something went wrong"),
);
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: Text("Loading"),
);
}
if (snapshot.hasData) {
return CustomScrollView(
slivers: [
CupertinoSliverNavigationBar(
largeTitle: Text("People"),
),
SliverList(
delegate: SliverChildListDelegate(
snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic>? data = document.data() as Map<String, dynamic>?;
return CupertinoListTile(
onTap:()=> callChatScreen(data['name'],data['uid'])
title: Text(data!['name']),
subtitle: Text(data['status']),
);
}).toList()))
],
);
}
//return Container();
});
}
}
【问题讨论】:
-
您的
People构造函数不能是const,因为它的currentUser成员。要么删除成员,要么简单地将构造函数设为非const。
标签: flutter