#flutter #dart #testing
Вопрос:
[введите описание изображения здесь][1]Тип аргумента «Продукт (где продукт определен в /root/app/lib/model/product.dart)» не может быть присвоен типу параметра » Продукт (где продукт определен в файле:// / root/app/lib/model/product.dart)».
ColorAndSize(
product: product),
SizedBox(height: kDefaultPadding / 2),
Description(product: product),
import 'package:flutter/material.dart';
import 'package:shoppingapp/model/product.dart';
import '../../../constants.dart';
class ColorAndSize extends StatelessWidget {
final Product product;
const ColorAndSize({Key? key, required this.product}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text("Color"), //text
Row(
children: <Widget>[
ColorDot(
color: Color(0xFF356C95),
isSelected: true,
), //colordot
ColorDot(color: Color(0xFF356C95)), //colordot
ColorDot(color: Color(0xFF356C95)), //colordot
], //widget
), //row
], //widget
),
), //column
Expanded(
child: RichText(
text: TextSpan(
style: TextStyle(color: kTextColor),
children: [
TextSpan(
text: "sizen",
), //textsapn
TextSpan(
text: "${product.size} cm",
style: TextStyle(fontWeight: FontWeight.bold),
), //textspan
], //widget
), //textspan
),
), //richtext
], //widget
); //row
}
}
class ColorDot extends StatelessWidget {
final Color color;
final bool isSelected;
const ColorDot({
Key? key,
required this.color,
this.isSelected = false,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.only(top: kDefaultPadding / 4, right: kDefaultPadding / 2),
padding: EdgeInsets.all(2.5),
height: 24,
width: 24,
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
color: isSelected ? color : Colors.transparent,
), //border.all
), //boxdecoration
child: DecoratedBox(
decoration: BoxDecoration(
color: color,
shape: BoxShape.circle,
), //boxdecoration
), //decoratedbox
); //container
}
}
как и раньше, у меня была ошибка, превышающая максимальный размер стека, после очистки которой появляется эта ошибка, есть ли связь между этими двумя ошибками
а вот мой файл с дротиками для тела
import 'package:flutter/material.dart';
import '../../../model/product.dart';
import '../../../constants.dart';
import 'add_to_cart.dart';
import 'color_and_size.dart';
import 'description.dart';
import 'product_title_with_image.dart';
import 'package:shoppingapp/screens/details/components/counter_with_fav_btn.dart';
class Body extends StatelessWidget {
final Product product;
const Body({Key? key, required this.product}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return SingleChildScrollView(
child: Column(
children: <Widget>[
SizedBox(
height: size.height,
child: Stack(
children: <Widget>[
Container(
padding: EdgeInsets.only(top: size.height * 12, left: kDefaultPadding, right: kDefaultPadding), //edgeinsets
margin: EdgeInsets.only(top: size.height * 0.3),
height: 500,
decoration: BoxDecoration(
color: Colors.white, //boxdecoration
borderRadius: BorderRadius.only(
topLeft: Radius.circular(24),
topRight: Radius.circular(24),
), //boxdecoration
), //borderradius
child: Column(
children: <Widget>[
ColorAndSize(product: product), //colorand size
SizedBox(height: kDefaultPadding / 2), //sizedbox
Description(product: product),
SizedBox(height: kDefaultPadding / 2), //sizedbox
CounterWithFavBtn(), //counterwithfavbtn
SizedBox(height: kDefaultPadding / 2), //sizedbox
AddToCart(product: product), //addtocart
], //widget
), //column
), //container
ProductTitleWithImage(product: product),
], //widget
), //stack
), //sizedbox
], //widget
), //column
); //singlechildscrollview
}
}
Комментарии:
1. Показать код
ColorAndSize
класса2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Убедитесь, что у вас одинаковые пути импорта.
Иногда это происходит, когда вы изменяете имя файла, а импорт не изменяется. Поэтому вам придется вручную изменить путь импорта.
Почему это приводит к ошибке?
Технически вы получаете доступ к двум разным классам/файлам (один, вероятно, не существует), и поэтому они не рассматриваются как одно и то же.