单击Flutter中的按钮时如何将对象存储在数组中?

祝你生日快乐

我是Flutter的新手。我想单击按钮时将所有id存储在数组中。如果可以的话请给我一个解决方案,然后我接受您的回答这里有人为此提供解决方案吗?提前致谢。这是我的代码。

错误的样子,

[ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: type 'String' is not a subtype of type 'List<String>'

码:

_saveQtyValue(id) async {
    print(id);
    var pId = id; // 5d9890c7773be00ab5b41701


    final prefs = await SharedPreferences.getInstance();
    prefs.setStringList('id_list', pId);

    List<String> show_id = List<String>();
    show_id = prefs.getStringList('id_list');
    print('id====$show_id');

    List<String> list = show_id;
    list.add(id);
    print('list id=====$list');


  }

在单击_saveQtyValue()函数传递ID时,我要将所有ID存储在一个数组中。

完整代码:

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';
import 'package:spurtcommerce/config.dart' as config;
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter_html/flutter_html.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:toast/toast.dart';

class ProductViewScreen extends StatefulWidget {
  final id;
  final name;
  ProductViewScreen({Key key, @required this.id, this.name}) : super(key: key);
  @override
  ProductViewScreenState createState() => ProductViewScreenState();
}

class ProductViewScreenState extends State<ProductViewScreen> {
  List product;
  List productImage;
  List pId;

  // List<String> productIdArray = new List();

  @override
  void initState() {
    super.initState();
    this.getProduct(); // Function for get product details
  }

/*
 *  For Product get by id
 */
  Future<String> getProduct() async {
    var id = this.widget.id;
    var response = await http.get(
        Uri.encodeFull(config.baseUrl + 'product-store/productdetail/$id'),
        headers: {"Accept": "application/json"});
    setState(() {
      product = json.decode(response.body)['data'];
    });

    setState(() {
      productImage = product[0]['productImage'];
    });

    return "Successfull";
  }

  _saveQtyValue(id) async {
    print(id);
    // var pId = id;
    setState(() {
      pId = id;
    });
  print('state id===$pId');
    final prefs = await SharedPreferences.getInstance();
    prefs.setStringList('id_list', pId);

    List<String> show_id = List<String>();
    show_id = prefs.getStringList('id_list');
    print('id====$show_id');

    List<String> list = show_id;
    list.add(id);
    print('list id=====$list');

    Toast.show("Added in cart", context,
        duration: Toast.LENGTH_SHORT, gravity: Toast.BOTTOM);
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: new Text(this.widget.name),
          actions: [
            Icon(
              Icons.notifications,
              color: Colors.yellowAccent,
              size: 24.0,
            ),
          ],
        ),
        body: SingleChildScrollView(
            scrollDirection: Axis.vertical,
            child: Column(
              children: <Widget>[
                Column(children: [
                  CarouselSlider(
                    height: 200.0,
                    items: productImage.map((i) {
                      return Builder(
                        builder: (BuildContext context) {
                          return Container(
                              margin: EdgeInsets.symmetric(horizontal: 5.0),
                              child: Image.network(
                                  config.mediaUrl +
                                      '${i['containerName']}' +
                                      '${i['image']}',
                                  width: 200,
                                  height: 200,
                                  fit: BoxFit.fill));
                        },
                      );
                    }).toList(),
                  ),
                ]),
                new Row(children: <Widget>[
                  Expanded(
                    child: SizedBox(
                        height: 700.0,
                        child: new ListView.builder(
                          itemCount: product.length,
                          itemBuilder: (BuildContext ctxt, int i) {
                            return SizedBox(
                              child: Card(
                                color: Colors.grey[200],
                                child: Padding(
                                  padding:
                                      EdgeInsets.only(right: 5.0, left: 5.0),
                                  child: new Container(
                                      margin: EdgeInsets.all(10),
                                      child: Column(
                                        children: <Widget>[
                                          Align(
                                            alignment: Alignment.centerLeft,
                                            child: Text(
                                              '${product[i]['name']}',
                                              textAlign: TextAlign.left,
                                              style: TextStyle(fontSize: 15.0),
                                            ),
                                          ),
                                          new Divider(),
                                          Align(
                                            alignment: Alignment.centerLeft,
                                            child: Text(
                                              'Category: ${product[i]['Category'][0]['categoryName']}',
                                              textAlign: TextAlign.right,
                                              style: TextStyle(fontSize: 15.0),
                                            ),
                                          ),
                                          new Divider(),
                                          Align(
                                            alignment: Alignment.centerLeft,
                                            child: Text(
                                              'Availability : ${product[i]['price']}',
                                              textAlign: TextAlign.right,
                                              style: TextStyle(fontSize: 15.0),
                                            ),
                                          ),
                                          new Divider(),
                                          Align(
                                              child: Row(
                                            mainAxisAlignment:
                                                MainAxisAlignment.spaceBetween,
                                            children: <Widget>[
                                              Column(
                                                children: <Widget>[
                                                  Text(
                                                    'Rs. : ${product[i]['price']}',
                                                    textAlign: TextAlign.right,
                                                    style: TextStyle(
                                                        fontSize: 15.0,
                                                        color: Colors.red),
                                                  ),
                                                ],
                                              ),
                                            ],
                                          )),
                                          new Divider(),
                                          Align(
                                            alignment: Alignment.center,
                                            child: Icon(
                                              Icons.favorite,
                                              color: Colors.deepPurple,
                                              size: 40.0,
                                            ),
                                          ),
                                          new Divider(),
                                          Align(
                                            child: Card(
                                              child: FlatButton(
                                                onPressed: () => {
                                                  _saveQtyValue(
                                                      '${product[i]['productId']}')
                                                },
                                                color: Color.fromRGBO(
                                                    94, 199, 182, 0.9),
                                                padding: EdgeInsets.all(10.0),
                                                child: Row(
                                                  mainAxisAlignment:
                                                      MainAxisAlignment.center,
                                                  children: <Widget>[
                                                    Icon(Icons.shopping_cart),
                                                    Text(
                                                      "   Add to Cart",
                                                    )
                                                  ],
                                                ),
                                              ),
                                            ),
                                          ),
                                          new Divider(),
                                          Align(
                                            alignment: Alignment.topLeft,
                                            child: Text(
                                              'Description',
                                              style: TextStyle(
                                                  fontSize: 15,
                                                  fontWeight: FontWeight.bold),
                                            ),
                                          ),
                                          Align(
                                              alignment: Alignment.center,
                                              child: Html(
                                                data:
                                                    '${product[i]['description']}',
                                              )),
                                        ],
                                      )),
                                ),
                              ),
                            );
                          },
                        )),
                  ),
                ]),
              ],
            )));
  }
}

我想要这种格式

[{5d9890c7773be00ab5b41701},{5d9890c7773be00ab5b41702}]
加济汗·阿兰库斯(Gazihan Alankus)
_saveQtyValue(id) async {
    print(id);
    var pId = id; // 5d9890c7773be00ab5b41701


    final prefs = await SharedPreferences.getInstance();

    List<String> show_id = prefs.getStringList('id_list') ?? List<String>();  // <-EDITED HERE
    print('id====$show_id');

    List<String> list = show_id;
    list.add(id);
    prefs.setStringList('id_list', list);

    print('list id=====$list');


  }

我对您的函数进行了较小的编辑,这应该保存字符串列表。该代码可以通过其他方式进行改进。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将对象存储在数组中时,我的值在数组中不断变化

来自分类Dev

如何将单选按钮的值存储在数组中

来自分类Dev

在按下按钮时如何将ID存储在数组中?

来自分类Dev

如何在数组中单击按钮时执行功能?

来自分类Dev

如何将对象存储在向量中?

来自分类Dev

如何将对象存储在向量中?

来自分类Dev

PHP将对象引用存储在数组中

来自分类Dev

将对象存储在数组中,然后访问它们

来自分类Dev

在每个按钮上,单击将值存储在数组中

来自分类Dev

对象如何存储在数组中?

来自分类Dev

单击Iphone中的按钮时如何在数组中搜索单词

来自分类Dev

如何在单击按钮时将可编辑的div内容保存在数组中

来自分类Dev

我如何将xml dom对象存储在数组中

来自分类Dev

如何在mongoDB中查询存储在数组中的对象

来自分类Dev

循环文件时如何将所有答案存储在数组中

来自分类Dev

单击创建按钮时,如何将当前时间存储到数据库中?

来自分类Dev

如何将对象推入JavaScript原型内部的数组中?

来自分类Dev

如何将对象的空属性拼接到数组中?

来自分类Dev

如何将对象值移动到MongoDB中的数组?

来自分类Dev

如何将对象检索到Javascript数组中?

来自分类Dev

如何将对象从PHP转换为Javascript中的数组?

来自分类Dev

如何将对象数组中的数字加倍?

来自分类Dev

如何将表格值存储在数组中?

来自分类Dev

如何将令牌(strtok)存储在数组的指针中

来自分类Dev

如何将值存储在数组中

来自分类Dev

如何将文件内容存储在数组中?

来自分类Dev

如何将引用存储在数组中?

来自分类Dev

如何将类型存储在数组中?

来自分类Dev

如何将解析后的数据存储在数组中?

Related 相关文章

热门标签

归档