Оператор «[]» не определен для типа «Тип». Попробуйте определить оператор '[]' - PullRequest
0 голосов
/ 20 июня 2020

У меня есть домашний экран, наверху которого я объявил список, с направлением прокрутки, получающим информацию из файла list.dart. Этот экран с горизонтальной прокруткой дает мне 5 изображений и текст в каждом из них. Я хотел бы вставить нажатие на другие экраны в соответствии с информацией, указанной в этом списке. Пример: чат, прямо в чат. Экран.

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

Домашний список

 import 'package:flutter/material.dart';
 import 'package:projeto/pages/chat.screen.dart';





   class HomeList {
   HomeList({
   this.navigateScreen,
   this.imagePath = '',
  });

 Widget navigateScreen;
 String imagePath;

 static List<HomeList> homeList = [
  HomeList(
   imagePath: 'assets/page1/usuario.png',
   navigateScreen: ChatScreen(),
  ),
  HomeList(
   imagePath: 'assets/page1/entregas.png',
   navigateScreen: ChatScreen(),
  ),
  HomeList(
   imagePath: 'assets/page1/msg.png',
   navigateScreen: ChatScreen(),
  ),
  HomeList(
   imagePath: 'assets/page1/configurações.png',
   navigateScreen: ChatScreen(),
  ),
  HomeList(
   imagePath: 'assets/page1/sair.png',
   navigateScreen: ChatScreen(),
  ),
  ];
  }

1 Ответ

0 голосов
/ 20 июня 2020

насколько я понимаю, вы хотите преобразовать данные в вашем файле HomeList в представление списка, где нажатие на один из его элементов приведет вас на соответствующую страницу, вы можете использовать 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,
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...