Я хочу добавить транзакцию на карту #Flutter

я пытаюсь добавить список, когда я нажимаю FlatButton, но я не могу добавить название ввода и сумму у меня есть эта ошибка

Скриншот (Ошибка)

Скриншот симулятора — iPhone 12 Pro Max

Основной файл:

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:testspeed3/passAddfun.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final titleController = TextEditingController();
  final amountController = TextEditingController();

  final List transaction = [
    {
      'title': 'Home',
      'amount': 44,
      'date': DateTime.now(),
    },
    // {
    //   'title': 'Muhammed',
    //   'amount': 22,
    //   'date': DateTime.now(),
    // },
    // {
    //   'title': 'BestPR',
    //   'amount': 11,
    //   'date': DateTime.now(),
    // },
  ];

  void SubmitData(var titleSub, double amountsub) {
    final NewList = [
      {
        'title': titleSub,
        'amount': amountsub,
        'date': '${DateTime.now()}',
      }
    ];

    setState(() {
      transaction.add(NewList);
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Test Speeeed',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Home'),
        ),
        body: Container(
          margin: EdgeInsets.all(20),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            children: [
              PassData(SubmitData),
              ...(transaction).map((e) {
                return Card(
                    margin: EdgeInsets.fromLTRB(0, 10, 0, 10),
                    elevation: 3,
                    child: Row(
                      children: [
                        Container(
                            padding: EdgeInsets.all(3),
                            margin: EdgeInsets.all(20),
                            decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(10),
                              color: Colors.blue,
                            ),
                            child: Text(
                              '\$${e['amount']}',
                              style:
                                  TextStyle(fontSize: 15, color: Colors.white),
                            )),
                        Column(
                          children: [
                            Container(
                                margin: EdgeInsets.fromLTRB(0, 0, 0, 10),
                                child: Text(
                                  e['title'],
                                  style: TextStyle(fontWeight: FontWeight.bold),
                                )),
                            Text(
                              '${DateFormat.MMMMd().format(e['date'])}',
                              style: TextStyle(color: Colors.black38),
                            ),
                          ],
                        ),
                      ],
                    ));
              })
            ],
          ),
        ),
      ),
    );
  }
}

Файл PassAddFun:

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';

class PassData extends StatefulWidget {
  final Function Adx;

  PassData(this.Adx);

  @override
  _PassDataState createState() => _PassDataState();
}

class _PassDataState extends State<PassData> {
  final titleController = TextEditingController();

  final amountController = TextEditingController();

  void sumbitdata() {
    widget.Adx(titleController.text, double.parse(amountController.text));
  }

  @override
  Widget build(BuildContext build) {
    return Column(
      children: [
        Container(
            padding: EdgeInsets.fromLTRB(0, 0, 0, 30),
            child: TextField(
              decoration: InputDecoration(labelText: 'Title'),
              controller: titleController,
            )),
        Container(
          child: TextField(
              decoration: InputDecoration(labelText: 'Amount'),
              controller: amountController),
        ),
        Container(
            margin: EdgeInsets.fromLTRB(0, 10, 0, 40),
            child: FlatButton(
              onPressed: () {
                sumbitdata();
              },
              child: Text(
                'Add Transaction',
                style: TextStyle(color: Colors.white),
              ),
              color: Colors.blue,
            )),
      ],
    );
  }
}

Я пытаюсь добавить запись в данные после нажатия указанной кнопки, но это делается не так, как я хочу? Почему это связано с типом списка? Или что и что я должен изменить в коде

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
396
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы добавляете список в другой список. Для этого вы должны использовать .addAll вместо просто .add

setState(() {
      transaction.addAll(NewList);
    });

Другие вопросы по теме