flutter - Flutter - 位置参数太多
问题描述
我想将文档和用户对象传递给一个对话框,在一个单独的文档中编码,它可以对该用户的文档执行操作。
传递信息的代码是:
Widget _buildFunctionCards(BuildContext context, DocumentSnapshot document, FirebaseUser user) {
return ListTile(
title: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (_) => FunctionEditOptions(document, user),
);},
child:Container... ()))}
接收文件是这样编码的:
class FunctionEditOptions extends StatefulWidget {
FunctionEditOptions({this.db, this.user});
final FirebaseUser user;
final DocumentSnapshot db;
@override
State<StatefulWidget> createState() => FunctionEditOptionsState();
}
class FunctionEditOptionsState extends State<FunctionEditOptions>
with SingleTickerProviderStateMixin {
AnimationController controller;
Animation<double> scaleAnimation;
@override
收到的错误消息是:“位置参数太多:预期为 0,但找到了 2 个。”
如果有人能提供见解,我将不胜感激!
解决方案
改变这个:
builder: (_) => FunctionEditOptions(document, user),
对此
builder: (_) => FunctionEditOptions(db: document, user: user), // or:
builder: (_) => FunctionEditOptions(user: user, db: document), // both ways are correct
当在括号内指定参数时,它们变成可选的并且可能是乱序的。所以你必须在传递参数时命名参数。
另一种方法是从括号中取出参数并确保参数是有序的。
FunctionEditOptions(this.db, this.user);
并这样称呼它:
builder: (_) => FunctionEditOptions(document, user),
你可以混合两者
FunctionEditOptions(this.db, {this.user});
并这样称呼它:
builder: (_) => FunctionEditOptions(document, user: user),
推荐阅读
- reactjs - 如何在不重新渲染站点或使用 MuiThemeProvider 的情况下更改材质 ui 元素的颜色
- python - 如何在 Firebase 中按降序排列数据 - Python
- python - 构造类类型的枚举值
- python - 递归查找列表的所有组合
- ajax - 如何在 onunload 函数中向我的服务器发送同步 ajax 请求
- c++ - 为什么 c++ DLL 中的多线程在构建时会出现错误 C3867?
- python - 有没有办法在 Django 中合并 2 个查询集并按它们的相关字段对它们进行排序?
- c# - 为什么 ElasticSearch Nest Query 中会出现转义反斜杠?
- r - 如何从数据框中的列中获取连续零的数量
- spring-security - 如何在 Spring Cloud Gateway 上获得角色