Я создаю две страницы: первая страница - это домашняя страница, на которой отображаются изображение и имя, вторая страница - это страница с подробностями, которая показывает изображение, имя и цену. Теперь проблема в том, что если я нажимаю на изображение, оно должно отображать изображение, имя и цену на второй странице, но показывает ошибку типа «double» не является подтипом строки типа, даже если я пытался преобразовать ее в строку. Ниже приведен код двух страниц и одной модели класса дротика.

HomePage.dart

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();}
class _HomeState extends State<Home> {
List<Product> _product=[
  Product(
    name: "Small Cake",
    image: "assets/1.png",
    price: 50.00,
  ),];
  @override
  Widget build(BuildContext context) {
    return PlatformScaffold(
        body: ListView.builder(
            itemCount: _product.length,
            itemBuilder: (BuildContext context, int index) {
              return Products(
                product_image: _product[index].image,
                product_name: _product[index].name,
                product_price: _product[index].price,);}));}}
class Products extends StatelessWidget {
  final product_name;
  final product_image;
  final product_price;
  Products({this.product_name, this.product_image, this.product_price});
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(
          top: 35.0, bottom: 15.0, left: 20.0, right: 20.0),
      child: GestureDetector(
        onTap: (){
          Navigator.of(context).push(MaterialPageRoute(builder: (context) => Quantities(
            productname: product_name,
            productprice: product_price,
            productimage: product_image,
          )));},
        child: Container(
          child: new FittedBox(
            child: Material(
                color: Colors.white,
                elevation: 15.0,
                borderRadius: BorderRadius.circular(15.0),
                shadowColor: Color(0x802196F3),
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Container(
                      width: 250,
                      height: 200,
                      child: ClipRRect(
                        borderRadius: new BorderRadius.circular(15.0),
                        child: new Image.asset(
                          product_image,
                          fit: BoxFit.cover,),),),
                    Padding(
                      padding: const EdgeInsets.only(top: 5.0,bottom: 5.0),
                      child: Text(product_name,style: TextStyle(color: Colors.blueGrey[700],
                          fontWeight: FontWeight.bold,fontSize: 18.0),),),],)),),),),);}}

Кол-во. Дарт

class Quantities extends StatefulWidget {
  var productprice;
  String productimage;
  final productname;
  Quantities({this.productprice, this.productimage, this.productname});
  @override
  _QuantitiesState createState() => _QuantitiesState(productprice,productimage,productname);
}
class _QuantitiesState extends State<Quantities> {
  final productprice;
  final productimage;
  final productname;
  var finalprice;
  _QuantitiesState(this.productprice, this.productimage, this.productname);
@override
  void initState() {
  finalprice=double.parse(productprice);// tried to convert into string
    super.initState();}
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Details'),),
      body: Container(
      child: Column(
        children: <Widget>[
          Container(
            height: 200.0,
            child: GridTile(
              child: Container(
                color: Colors.white,
                child: Image.asset(productimage),),),),
          Text(productname),
          Text(finalprice.toString()),// This line getting an error of type double is not a subtype of string
        ],),),);}}

Product.dart

class Product {
  String name;
  String image;
  double price;
  Product({this.name, this.price,this.image});}
3
mohammed nabil 18 Апр 2020 в 18:14

1 ответ

Лучший ответ

Двойное преобразование в строку

productprice.toString().

Строка для удвоения

double.parse(productprice.toString())

11
Adnan karim 29 Окт 2020 в 19:18