10

I create two pages first page is home page which display the image and name, second page is the detail page which shows image, name and price. Now problem is if i click on the image it should be display the image,name and price in second page but it is showing an error of type 'double' is not a subtype of type string even i tried to convert it to string. Below is the code of two pages and one dart class model.

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

Quantities.dart

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});}
2
  • Have you tried using String interpolation? Text('$productprice') Commented Apr 18, 2020 at 15:21
  • @FederickJonathan i tried before but same error. Commented Apr 18, 2020 at 15:24

1 Answer 1

37

Double To String

productprice.toString().

String To Double

double.parse(productprice.toString())

Sign up to request clarification or add additional context in comments.

1 Comment

Or String toStringAsFixed(int fractionDigits) if you want to fix the precision

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.