тип аргумента «продукт» не может быть присвоен типу параметра «продукт»

#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:

Убедитесь, что у вас одинаковые пути импорта.

Иногда это происходит, когда вы изменяете имя файла, а импорт не изменяется. Поэтому вам придется вручную изменить путь импорта.

Почему это приводит к ошибке?

Технически вы получаете доступ к двум разным классам/файлам (один, вероятно, не существует), и поэтому они не рассматриваются как одно и то же.