我想在我的 FutureBuilder 中返回一个字符串列表,但对我来说这是不可能的,因为一个错误告诉我列表不是 Widget 类型的子类型。 实际上,返回必须是 List 类型才能将其添加到我的主类中的类中的列表的初始化中 我将这两个类以及错误消息附加给您,以便您理解。 谢谢
类READCITEE
import 'package:ampc93/fonction/firebase_crud/add_citee.dart';
import 'package:ampc93/fonction/firebase_crud/read_citee.dart';
import 'package:ampc93/page_citee.dart';
import 'package:flutter/material.dart';
class PageVille extends StatefulWidget {
final String? titre;
PageVille(this.titre);
@override
_PageVilleState createState() => _PageVilleState();
}
class _PageVilleState extends State<PageVille> {
TextEditingController citeeController = TextEditingController();
List<dynamic> citeesList = [];
@override
void initState() {
super.initState();
citeesList.add(ReadCitee(widget.titre!));
}
Future<void> displayDialog(BuildContext context) async {
return showDialog(
context: context,
builder: (context) {
return AlertDialog(
content: TextField(
controller: citeeController,
textInputAction: TextInputAction.go,
decoration:
InputDecoration(hintText: "Entrez une nouvelle citée"),
),
actions: [
TextButton(
child: Text("Ok"),
onPressed: () {
AddCitee(widget.titre!, citeeController.text);
setState(() {
citeesList.add(citeeController.text);
citeeController.clear();
});
Navigator.pop(context);
}),
TextButton(
onPressed: () {
Navigator.pop(context);
citeeController.clear();
},
child: Text("Annuler"),
)
],
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.titre!),
backgroundColor: Colors.teal,
),
body: Container(
padding: EdgeInsets.all(20.0),
child: ListView.separated(
itemBuilder: (context, index) {
return ListTile(
title: citeesList[index],
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PageCitee(citeesList[index]))),
trailing: IconButton(
icon: Icon(Icons.delete_forever),
color: Colors.red[300],
iconSize: 32,
onPressed: () {
setState(() {
citeesList.remove(citeesList[index]);
});
}));
},
separatorBuilder: (context, index) => Divider(),
itemCount: citeesList.length)),
floatingActionButton: FloatingActionButton(
onPressed: () => displayDialog(context),
child: Icon(Icons.add),
backgroundColor: Colors.teal[300],
),
);
}
}
班级原则
The following _TypeError was thrown building FutureBuilder<DocumentSnapshot<Object?>>(dirty, state: _FutureBuilderState<DocumentSnapshot<Object?>>#b2e48):
type 'List<dynamic>' is not a subtype of type 'Widget'
The relevant error-causing widget was
FutureBuilder<DocumentSnapshot<Object?>>
package:ampc93/…/firebase_crud/read_citee.dart:12
When the exception was thrown, this was the stack
#0 ReadCitee.build.<anonymous closure>
package:ampc93/…/firebase_crud/read_citee.dart:23
#1 _FutureBuilderState.build
package:flutter/…/widgets/async.dart:773
#2 StatefulElement.build
package:flutter/…/widgets/framework.dart:4612
#3 ComponentElement.performRebuild
package:flutter/…/widgets/framework.dart:4495
#4 StatefulElement.performRebuild
package:flutter/…/widgets/framework.dart:4667
...
错误
http://localhost:3001/register
答案 0 :(得分:1)
尝试删除“DocumentSnapshot”。因为显然,“FutureBuilder”期待“DocumentSnapshot”数据类型。尝试从“Future Builder”中删除它,看看会发生什么。