Флаттер: получатель 'title' был назван нулевым - PullRequest
0 голосов
/ 25 марта 2020

Код отображает элементы заказа в списке. Я вызвал класс в построителе списка.

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

import '../providers/orders.dart' as ord;

class OrderItem extends StatefulWidget {
  final ord.OrderItem order;

  OrderItem(this.order);

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

class _OrderItemState extends State<OrderItem> {
  var _expanded = false;

  @override
  Widget build(BuildContext context) {
    return Card(
      margin: EdgeInsets.all(10),
      child: Column(
        children: <Widget>[
          ListTile(
            title: Text('Rs.${widget.order.amount.toStringAsFixed(2)}'),
            subtitle: Text(
              DateFormat('dd/MM/yyyy hh:mm').format(widget.order.dateTime),
            ),
            trailing: IconButton(
              icon: Icon(_expanded ? Icons.expand_less : Icons.expand_more),
              onPressed: () {
                setState(() {
                  _expanded = !_expanded;
                });
              },
            ),
          ),
          if (_expanded)
            Container(
              padding: EdgeInsets.symmetric(vertical: 4, horizontal: 15),
              height: min(widget.order.products.length * 20.0 + 10, 100),
              child: ListView(
                children: widget.order.products
                    .map(
                      (prod) => Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: <Widget>[
                          Text(
                            (prod.title == null) ? "NULL": prod.title,
                            style: TextStyle(
                              fontSize: 18,
                              fontWeight: FontWeight.bold,
                            ),
                          ),
                          Text(
                            '${prod.quantity}x Rs.${prod.price}',
                            style: TextStyle(
                              fontSize: 18,
                              color: Colors.grey,
                            ),
                          )
                        ],
                      ),
                    )
                    .toList(),
              ),
            ),
        ],
      ),
    );
  }
}

Я переключаюсь с расширенной переменной, чтобы отобразить больше информации, основанной на нажатии кнопки. Изначально проблем со сборкой не возникает, но когда расширенная переменная в изменилась на TRUE, она должна построить контейнер с названием продукта и ценой. Вместо этого выскакивает NoSuchMethodError. Я не уверен, почему. Никакой заголовок в моем json не имеет значения.

The getter 'title' was called on null.
Receiver: null
Tried calling: title
The relevant error-causing widget was
    OrderItem 

Json от firebase

flutter: {"-M0NrqH2mMcAVL5jpETk":{"amount":258.0,"dateTime":"2020-02-18T20:46:37.916189","products":[{"id":"-M0Nrla-o2doG3dnsV8Z","price":258.0,"quantity":1,"title":"test"}]},"-M0NxcXZWpDpILL56GgR":{"amount":516.0,"dateTime":"2020-02-18T21:11:54.544748","products":[{"id":"-M0Nrla-o2doG3dnsV8Z","price":258.0,"quantity":2,"title":"test"}]},"-M0Nxvi01cuwbjt2XYAk":{"amount":258.0,"dateTime":"2020-02-18T21:13:13.021139","products":[{"id":"-M0Nrla-o2doG3dnsV8Z","price":258.0,"quantity":1,"title":"test"}]},"-M2saQwrewiAyKuKXquN":{"amount":258.0,"dateTime":"2020-03-20T21:09:48.630353","products":[{"id":"-M0Nrla-o2doG3dnsV8Z","price":258.0,"quantity":1,"title":"test"}]}}

ПРИМЕЧАНИЕ. Однако в этом классе используется ТОЛЬКО список продуктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...