Флаттер - слишком много позиционных аргументов - PullRequest
1 голос
/ 26 апреля 2020

Я хочу передать document и user объекты в диалоговое окно, закодированное в отдельный документ, который может выполнить действие с документом этого пользователя.

Код, который передает информацию:

 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 найдено. "

Если кто-нибудь может дать представление, я был бы очень признателен!

1 Ответ

1 голос
/ 26 апреля 2020

Измените это:

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);

и вызвать его следующим образом. way:

builder: (_) => FunctionEditOptions(document, user),

Вы можете смешать оба

FunctionEditOptions(this.db, {this.user});

и назвать это так:

builder: (_) => FunctionEditOptions(document, user: user),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...