参数类型 'OrderItem' 无法分配给参数类型 'OrderItem'

The argument type 'OrderItem' can't be assigned to the parameter type 'OrderItem'

我无法将我的 class 分配给另一个,即使我已经为他们导入了库。我正在上课。在这里,我将从 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 :

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:

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];
  }}

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

ide ss

您的小部件文件名和数据 class 名称 same.It 具有相同的 class name.Make 数据 class 名称和小部件名称 different.It将解决问题

更改文件名和小部件名称有效

插件使用: 提供商:^6.0.2

OrdersScreen (Order_screen.dart)

 import 'package:flutter/material.dart';
 import 'package:order_item_proj/OrderItem.dart';
 import 'package:order_item_proj/Orders.dart' show Orders;
 import 'package:provider/provider.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'),
       ),
       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) => OrderItemWidget(orderData.orders[i])),
               );
             }
           }
         },
       ),
     );
   }
 }

OrderItem 小部件 (OrderItem.dart)

 import 'package:flutter/material.dart';
 import 'package:order_item_proj/Orders.dart' as ord;

 class OrderItemWidget extends StatefulWidget {
   final ord.OrderItem order;

   OrderItemWidget(this.order);

   @override
   State<OrderItemWidget> createState() => _OrderItemWidgetState();
 }

 class _OrderItemWidgetState extends State<OrderItemWidget> {
   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(""),
               trailing: IconButton(
                 icon: Icon(_expanded ? Icons.expand_less_rounded : Icons.expand_more_rounded),
                 onPressed: () {
                   setState(() {
                     _expanded = !_expanded;
                   });
                 },
               )),
           if (_expanded)
             Container(
               child: ListView(
                 children: widget.order.products
                     .map((prod) => Row(
                           mainAxisAlignment: MainAxisAlignment.spaceBetween,
                           children: [
                             Text("title"),
                           ],
                         ))
                     .toList()

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

订单项Class (Orders.dart)

 import 'package:flutter/cupertino.dart';
 
 class OrderItem {
   final String id;
   final double amount;
   final List<String> 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];
   }
 
   fetchandSetOrders() {}
 }