【问题标题】:having this error :type 'String' is not a subtype of type 'int' of 'index' on flutter app出现此错误:类型'String'不是颤振应用程序上'index'的'int'类型的子类型
【发布时间】:2021-02-21 14:33:53
【问题描述】:

我正在尝试从strapi 获取数据以显示在我的颤振应用程序上。它显示类型'String'不是'index'类型'int'的子类型。

我想在这个 product_page.dart 组件上展示产品:

import 'package:flutter/material.dart';
import 'package:flutter_ecommerce/models/app_state.dart';
import 'package:flutter_ecommerce/widgets/product_item.dart';
import 'package:flutter_redux/flutter_redux.dart';



class ProductsPage extends StatefulWidget {
  final void Function() onInit;
  ProductsPage({this.onInit});

  @override
  ProductsPageState createState() => ProductsPageState();
}

class ProductsPageState extends State<ProductsPage> {
  void initState() {
    super.initState();
    widget.onInit();
  }

  

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: _appBar,
        body: Container(
            decoration: gradientBackground,
            child: StoreConnector<AppState, AppState>(
                converter: (store) => store.state,
                builder: (_, state) {
                  return Column(children: [
                    Expanded(
                        child: SafeArea(
                            top: false,
                            bottom: false,
                            child: GridView.builder(
                                itemCount: state.products.length,
                                gridDelegate:
                                    SliverGridDelegateWithFixedCrossAxisCount(
                                        crossAxisCount: 2),
                                itemBuilder: (context, i) =>
                                    ProductItem(item: state.products[i]))))
                  ]);
                })));
  }
}

在我试图展示每个项目的这个组件上。 Product_item.dart:

import 'package:flutter/material.dart';


class ProductItem extends StatelessWidget {
  final dynamic item;
  ProductItem({this.item});



  @override
  Widget build(BuildContext context) {
    final String pictureUrl = 'http://localhost:1337${item['picture']['url']}';
    return GridTile(child: Image.network(pictureUrl, fit: BoxFit.cover));
  }
}

【问题讨论】:

  • state.products 是地图还是列表?

标签: android mongodb flutter dart strapi


【解决方案1】:

当您尝试使用接受整数作为数组索引的字符串时,会发生此错误。

所以,从您的代码来看,问题可能来自“item['picture']['url']”

该数组将改为接受类似于“item [0]”之类的东西....或者无论如何构建数组/数据。你应该检查数组是如何设置的。

如果您不确定,我会尝试打印出要调试的数组,而不是先将其发送到 ProductItem 小部件。

所以可能类似于以下内容:

child: GridView.builder(
                                itemCount: state.products.length,
                                gridDelegate:
                                    SliverGridDelegateWithFixedCrossAxisCount(
                                        crossAxisCount: 2),
                                itemBuilder: (context, i) =>
                                   {
                                        Print(state.products[i]);
                                        Print(state.products[i][0]);
                                   }
                  ]);

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2020-02-29
    • 2021-05-24
    • 2020-08-11
    • 2019-08-14
    • 2021-02-25
    • 2022-09-27
    • 1970-01-01
    相关资源
    最近更新 更多