没有为类型“ Type”定义运算符“ []”。尝试定义运算符'[]'

时间:2020-06-20 00:20:42

标签: flutter flutter-layout flutter-dependencies flutter-animation flutter-test

我有一个主屏幕,在该屏幕的顶部我声明了一个列表视图,滚动方向从list.dart文件中获取信息。这个水平滚动屏幕为我带来5张图像和每张图像一个文本。我想根据此列表中传递的信息插入指向其他屏幕的onpress。例如:聊天,直接转到chat.screen。

import cv2
from numpy import percentile
img = cv2.imread('mSEsr.jpg', cv2.IMREAD_GRAYSCALE)
cv2.normalize(img, img, 0, 255, cv2.NORM_MINMAX)
lower=percentile(img, 5)
upper=percentile(img,50)
cv2.normalize(img, img, -lower, 255+255-upper, cv2.NORM_MINMAX) # tune parameters

cv2.imwrite('finger_norm.png', img)

主页列表

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
  body: Stack(
    children: <Widget>[
      Container(
        width: double.infinity,
        height: MediaQuery.of(context).size.height * 4 / 7,
        decoration: BoxDecoration(
          gradient: LinearGradient(
            begin: Alignment.topCenter,
            end: Alignment.bottomCenter,
            colors: [Color(0xff40dedf), Color(0xff0fb2ea)],
          ),
        ),
      ),

      Positioned(
        top: 100,
        left: 20,
        child: Container(
          height: 100,
          width: MediaQuery.of(context).size.width,
          child: ListView.builder(
            scrollDirection: Axis.horizontal,
            itemCount: categoryData.length,
            itemBuilder: (context, index) {
              bool isSelected = true;
              if (index == 0) {
                isSelected = true;
              }
              Navigator.push<dynamic>(
                                  context,

  MaterialPageRoute<dynamic>(
                                    builder: (BuildContext 
  context) =>

  HomeList[index].navigateScreen,
                                  ),
                                );
              return Row(
                children: <Widget>[
                  Column(
                    children: <Widget>[
                      Container(
                        width: 65,
                        height: 65,
                        decoration: BoxDecoration(
                            color: isSelected
                                ? Colors.transparent
                                : Colors.transparent,
                            borderRadius: 
    BorderRadius.circular(16),
                            border: Border.all(
                              color: Colors.white,
                              width: 1,
                            ),
                            boxShadow: isSelected
                                ? [
                              BoxShadow(
                                  color: Color(0x14000000),
                                  blurRadius: 10)
                            ]
                                : null),
                        child: Center(
                          child: Image.asset(categoryData[index].imageUrl),
                        ),
                      ),
                      SizedBox(
                        height: 10,
                      ),
                      Text(
                        categoryData[index].name,
                        style: TextStyle(color: Colors.white, fontSize: 15),
                      ),

                    ],

                  ),

                  SizedBox(
                    width: 20,
                  )
                ],
              );
            },
          ),
        ),
      ),

1 个答案:

答案 0 :(得分:0)

据我了解,您想将HomeList文件中的数据转换为listview,在其中单击其项之一将带您到其相关页面,您可以将ListView.builder与itemBuilder和itemCount一起使用,代码下面显示了如何实现listView,其中项目是其中包含文本的图像以及onTap函数:

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: ListView.builder(
        scrollDirection: Axis.horizontal,
        itemBuilder: (context, index) {
          return GestureDetector(
            child: Stack(
              children: <Widget>[
                Image.asset(
                  homeList[index].imagePath,
                ),
                Positioned(child: Text())
              ],
            ),
            onTap: () => Navigator.push(
              context,
              MaterialPageRoute(
                  builder: (context) => homeList[index].navigateScreen),
            ),
          );
        },
        itemCount: homeList.length,
      ),
    );
  }
}