Ошибка флаттера: в моем списке был получен 'итератор' геттера - PullRequest
1 голос
/ 04 февраля 2020

Я получаю ответ, но проблема в том, что когда я нажимаю на мой API, сначала он показывает, что Getter Iterator был вызван на нуль, а затем после загрузки данных.

Это мой класс утилит.

class BlocApi with ChangeNotifier {
  BlocApi.instance() {
    getAllItems();
  }

  List<Categories> _items;

  List<Categories> get getItems => _items;

  setItems(List<Categories> items) async {
    _items = items;
    notifyListeners();
  }

  Future<void> getAllItems() async {
    Response response = await get('api Link');

    if (response.statusCode == 200) {
      var data = json.decode(response.body);
      var rest1 = data['Categories'] as List;

      List<Categories> totalList = new List<Categories>();
      for (var u in rest1) {
        final items1 = Categories.fromJson(u);
        totalList.add(items1);
      }
      setItems(totalList);
    } else {}
  }
}

затем, после этого, моя первая вкладка, и я вызываю свой API для разных вкладок.

class _BevaragesState extends State<Bevarages> {
  List<Itemsss> _items = new List<Itemsss>();

  @override
  void initState() {
    super.initState(); 
  }

  @override 
  Widget build(BuildContext context) {
    final BlocApi blocApi = Provider.of<BlocApi>(context);
    for (var u in blocApi.getItems) {
      if (u.categoryName == 'Bevarages') {
        for (var v in u.items) {
          _items.add(v);
        }
      }
    }

    return Scaffold( 
       body: Container(
         child: ListView.builder(
           itemCount: blocApi.getItems == null ? 0 : _items.length,
           itemBuilder: (BuildContext context, int index) {
             return Container(
                margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 25.0),
                child: Column(
                   children: <Widget>[
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceAround,
                children: <Widget>[
                  Flexible(
                    flex: 1,
                    child: Container(
                      margin: EdgeInsets.only(left: 5.0),
                      child: Image.network(
                        'http://dum9b973t0902.cloudfront.net/${_items[index].itemImage}',
                        height: 70.0,
                        width: 70.0,
                      ),
                    ),
                  ),
                  Flexible(
                    flex: 2,
                    child: Container(
                      margin: EdgeInsets.only(left: 5.0),
                      child: Column(
                        children: <Widget>[
                          Container(
                            alignment: Alignment.centerLeft,
                            child: Wrap(
                              children: <Widget>[
                                Text(
                                  _items[index].itemName,
                                  style: TextStyle(
                                    fontFamily: 'Arimo',
                                    fontWeight: FontWeight.w700,
                                    fontStyle: FontStyle.normal,
                                    fontSize: 15.0,
                                  ),
                                ),
                              ],
                            ),
                          ),
                          Container(
                            margin: EdgeInsets.only(top: 5.0),
                            child: Row(
                              children: <Widget>[
                                Text(
                                  'Price : ',
                                  textAlign: TextAlign.left,
                                ),
                                Text(
                                  _items[index].price,
                                  style: TextStyle(
                                    fontFamily: 'Arimo',
                                    fontWeight: FontWeight.w400,
                                    fontStyle: FontStyle.normal,
                                    fontSize: 13.0,
                                    decoration: TextDecoration.lineThrough,
                                  ),
                                ),
                              ],
                            ),
                          ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...