如何解决"The return type 'List<Text>?' isn't a 'Widget', as required by the closure's contex



im试图解决这个问题,我认为问题是试图将Text小部件转换为List。但我不知道该怎么办。我在网上搜索了一下,但我能找到解决方案。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
class HomeScreen extends StatefulWidget {
const HomeScreen({Key? key}) : super(key: key);
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
var stream = FirebaseFirestore.instance.collection("Notes");
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Column(
children: [
StreamBuilder<QuerySnapshot>(
stream: stream.snapshots(),
builder: (context, snapshot) {
var docsList = snapshot.data?.docs;
return Expanded(
child: ListView.builder(
itemCount: snapshot.data?.docs.length,
itemBuilder: (BuildContext context, int index) {
return docsList?.map((document) => Text(document["title"])).toList();
},
),
);
},
),
],
),
);
}
}

您试图从itemBuilder返回一个小部件列表,但它希望返回单个小部件。如果你喜欢有多个小部件,你可以使用列小部件,

itemBuilder: (BuildContext context, int index) {
return Column(
children: docsList
?.map((document) => Text(document["title"]))
.toList() ??
[],
);
},

或者你可能只想要

itemBuilder: (BuildContext context, int index) {
return Text(docsList?[index]["title"]);
},

使用

itemBuilder: (BuildContext context, int index) {
return ListTile(
leading: const Icon(Icons.list),
trailing: const Text(
"TRAIL",
style: TextStyle(color: Colors.green, fontSize: 15),
),
title: Text("${snapshot.data?.docs[index]["title"]}"));
}),

相关内容

最新更新