参数类型 '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() {}
}
我无法将我的 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() {}
}