gpt4 book ai didi

firebase - 生成函数返回null。 flutter 火基地

转载 作者:行者123 更新时间:2023-12-03 04:51:50 26 4
gpt4 key购买 nike

我尝试了很多事情,但没有任何可行的解决方案,请帮忙。
即使使用FutureBuilder,它似乎也不起作用,没有它,当我热重装时,我会得到结果。我不知道如何更改代码以使其正常工作。可能有一些小的缺失,但是我还不能弄清楚它是什么或如何解决。

"""import 'package:flutter/material.dart';
import 'package:list/screens/add_new_item_screen.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

final _firestore = Firestore.instance;
FirebaseUser loggedinUser;

Future<void> _fetchdata;


FirebaseAuth _auth = FirebaseAuth.instance;

class MainPage extends StatefulWidget {
@override
_MainPageState createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
void initState() {
super.initState();

_fetchdata = getCurrentUser();
}

Future<void> getCurrentUser() async {
try {
final user = await _auth.currentUser();
if (user != null) {
loggedinUser = user;
// print(loggedinUser.email);
}
} catch (e) {
print(e);
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.push(
context, MaterialPageRoute(
builder: (context) => Addnewitem()));
},
child: Icon(Icons.add),
),
appBar: AppBar(
leading: Container(),
title: Text("Shopping List"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.close),
onPressed: () {
// messagesStream();
_auth.signOut();
Navigator.pop(context);
})
],
),
body: SafeArea(child:

MessagesStream(),


),
);
}
}

class MessagesStream extends StatelessWidget {
@override
Widget build(BuildContext context) {
FutureBuilder(
future: _fetchdata,
builder: (context, myFuture){
if (myFuture.connectionState == ConnectionState.done && !myFuture.hasError && myFuture.hasData) {
if (myFuture.data != null) {

return StreamBuilder<QuerySnapshot>(

stream: _firestore
.collection('users')
.document(loggedinUser.uid)
.collection('items')
.snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData || snapshot.hasError || snapshot.data == null || snapshot.connectionState == ConnectionState.waiting || loggedinUser.email == null) {

return (Center(
child: CircularProgressIndicator(
backgroundColor: Colors.lightBlueAccent)));
}
final items = snapshot.data.documents.reversed;
List<MessageBubble> messageBubbles = [];
for (var message in items) {
final item = message.data['item'];

final quant = message.data['quant'];
final id = message.data['id'];
final boli = message.data['bool'];

// final currentUser = loggedinUser.email;

final messageBubble = MessageBubble(
text: item,
quant: quant,
documentReference: message.reference,
);

messageBubbles.add(messageBubble);
}
try {
return Expanded(
child: ListView(
// reverse: true,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
children: messageBubbles,
),
);
} catch (e) {
return Container();
}
});

}else {
return Container();
}
} else {
return CircularProgressIndicator();
}
});
}
}

class MessageBubble extends StatelessWidget {
MessageBubble({this.text, this.quant, this.documentReference});

final String text;
final String quant;
final DocumentReference documentReference;

@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Expanded(
flex: 1,
child: Column(

crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Container(
color: Colors.tealAccent,
child: FlatButton(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
text,
style: TextStyle(color: Colors.black, fontSize: 20),
),
Text(quant,
style: TextStyle(color: Colors.black, fontSize: 20))
],
),
onPressed: () {
documentReference.delete();
}),
)
],
),
),
);
}
}"""

Flutter doctor:
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
[✓] Chrome - develop for the web
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.44.0)
[✓] Connected device (3 available)

• No issues found!

最佳答案

使用return函数时,您需要添加build关键字,因为它返回了Widget:

 class MessagesStream extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _fetchdata,
builder: (context, myFuture){
if (myFuture.connectionState == ConnectionState.done && !myFuture.hasError && myFuture.hasData) {
if (myFuture.data != null) {

return StreamBuilder<QuerySnapshot>(

关于firebase - 生成函数返回null。 flutter 火基地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61228174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com