【问题标题】:The argument type 'OrderItem' can't be assigned to the parameter type 'OrderItem'参数类型“OrderItem”不能分配给参数类型“OrderItem”
【发布时间】:2022-01-08 10:05:21
【问题描述】:

即使我已经为他们导入了库,我也无法将我的一个类分配给另一个类。我正在学习课程。在此,我将从 firebase 获取订单并显示订单屏幕。

Orderscreen(我得到错误的地方):

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

import '../providers/orders.dart' show Orders;

import '../widgets/app_drawer.dart';
import 'package:shop_app/Widgets/OrderItem.dart';

class OrdersScreen extends StatelessWidget {
  static const routeName = '/orders';

  @override
  Widget build(BuildContext context) {
    print('building orders');
    // final orderData = Provider.of<Orders>(context);
    return Scaffold(
      appBar: AppBar(
        title: Text('Your Orders'),
      ),
      drawer: AppDrawer(),
      body: FutureBuilder(
        future: Provider.of<Orders>(context, listen: false).fetchandSetOrders(),
        builder: (ctx, dataSnapshot) {
          if (dataSnapshot.connectionState == ConnectionState.waiting) {
            return Center(child: CircularProgressIndicator());
          } else {
            if (dataSnapshot.error != null) {
              // ...
              // Do error handling stuff
              return Center(
                child: Text('An error occurred!'),
              );
            } else {
              return Consumer<Orders>(
                builder: (ctx, orderData, child) => ListView.builder(
                      itemCount: orderData.orders.length,
                      itemBuilder: (ctx, i) => OrderItem(orderData.orders[i])//getting error here
                    ),
              );
            }
          }
        },
      ),
    );
  }
}

我的订单项类:

class OrderItem extends StatefulWidget {
  final ord.OrderItem order;

  OrderItem(this.order);

  @override
  State<OrderItem> createState() => _OrderItemState();
}

class _OrderItemState extends State<OrderItem> {
  var _expanded = false;
  @override
  Widget build(BuildContext context) {
    return Card(
      margin: EdgeInsets.all(10),
      child: Column(
        children: [
          ListTile(
              title: Text('\$${widget.order.amount}'),
              subtitle: Text(
                DateFormat('dd/MM/yyyy/ hh:mm').format(widget.order.dateTime),
              ),
              trailing: IconButton(
                icon: Icon(_expanded
                    ? Icons.expand_less_rounded
                    : Icons.expand_more_rounded),
                onPressed: () {
                  setState(() {
                    _expanded = !_expanded;
                  });
                },
              )),
          if (_expanded)
            Container(
              height: min(widget.order.products.length * 20.0 + 100, 180),
              child: ListView(
                children: widget.order.products
                    .map((prod) => Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            Text(prod.title),
                            Text('${prod.quanitity}x \$${prod.price}')
                          ],
                        ))
                    .toList()

                //min function will give min of two functions , if expanded is true then this will take place
                ,
              ),
            ),
        ],
      ),
    );
  }
}

我的订单类:

class OrderItem {
  final String id;
  final double amount;
  final List<CartItem> products;
  final DateTime dateTime;

  OrderItem(this.id, this.amount, this.products, this.dateTime);
}

class Orders with ChangeNotifier {
  List<OrderItem> _orders = [];

  List<OrderItem> get orders {
    return [..._orders];
  }}

感谢大家的帮助。如果你能解释为什么我是一个新手,我会得到这个错误,这将是有帮助的

ide ss

【问题讨论】:

    标签: firebase flutter dart flutter-layout flutter-dependencies


    【解决方案1】:

    您的小部件文件名和数据类名称相同。它具有相同的类名。使数据类名称和小部件名称不同。它将解决问题

    【讨论】:

    • 我将一个更改为“OrderItems”,但错误仍然存​​在。 “参数类型‘OrderItem’不能分配给参数类型‘OrderItems’。” .你能告诉我怎么做吗?
    • 能否将小部件更改为 OrderItemView 并尝试一次
    • 我做了,但我得到了完全相同的错误。 “参数类型‘OrderItem’不能分配给参数类型‘OrderItems’。”我将类命名为 Orderitems,将小部件命名为 OrderItemView
    • 可以分享一下ide截图吗?
    • 添加到问题中
    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 2018-12-26
    • 2021-06-19
    • 2021-12-13
    • 2021-08-19
    • 2020-06-25
    • 2019-02-13
    • 2019-06-09
    相关资源
    最近更新 更多