сделайте gridview внутри списка Flutter, и просто закончите с этой ошибкой - PullRequest
0 голосов
/ 20 марта 2020
[Widget _builtCard() {
    return Container(
      margin: EdgeInsets.symmetric(horizontal: 10.0),
      child: FutureBuilder(
        future: dbManager.getCategoryList(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            categoryList = snapshot.data;
            print("object");
            return ListView.builder(
              itemCount: categoryList.length,
              physics: ScrollPhysics(),
              shrinkWrap: true,
              itemBuilder: (BuildContext context, int index) {
                return Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>\[
                    Container(
                      margin:
                          EdgeInsets.symmetric(vertical: 10.0, horizontal: 5.0),
                      child: Text(
                        categoryList\[index\].categoryName.toUpperCase(),
                        style: TextStyle(
                            fontWeight: FontWeight.bold, fontSize: 20.0),
                      ),
                    ),
                    AspectRatio(
                      aspectRatio: 2 / 3,
                      child: Container(
                        child: FutureBuilder(
                          future: dbManager
                              .getProductList(categoryList\[index\].categoryName),
                          builder: (context, snapshot) {
                            if (snapshot.hasData) {
                              productList = snapshot.data;
                              productList.forEach((row) => print(row));
                              return GridView.builder(
                                  physics: ScrollPhysics(),
                                  scrollDirection: Axis.horizontal,
                                  gridDelegate:
                                      SliverGridDelegateWithFixedCrossAxisCount(
                                          childAspectRatio: 4 / 2.5,
                                          crossAxisCount: 2,
                                          crossAxisSpacing: 15.0,
                                          mainAxisSpacing: 15.0),
                                  shrinkWrap: true,
                                  itemCount: productList == null
                                      ? 0
                                      : productList.length,
                                  itemBuilder:
                                      (BuildContext context, int index) {
                                    Product prod = productList\[index\];
                                    return GestureDetector(
                                      child: Card(
                                        shape: RoundedRectangleBorder(
                                            borderRadius:
                                                BorderRadius.circular(10.0)),
                                        elevation: 7.0,
                                        child: Column(
                                          children: <Widget>\[
                                            SizedBox(height: 12.0),
                                            Stack(children: <Widget>\[
                                              Container(
                                                height: MediaQuery.of(context)
                                                        .size
                                                        .height /
                                                    5,
                                                width: MediaQuery.of(context)
                                                    .size
                                                    .width,
                                                decoration: BoxDecoration(
                                                    borderRadius:
                                                        BorderRadius.circular(
                                                            20.0),
                                                    image: DecorationImage(
                                                        image: NetworkImage(
                                                            prod.picture))),
                                              ),
                                            \]),
                                            SizedBox(height: 20.0),
                                            Text(
                                              prod.name,
                                              overflow: TextOverflow.ellipsis,
                                              textAlign: TextAlign.center,
                                              style: TextStyle(
                                                fontFamily: 'Quicksand',
                                                fontWeight: FontWeight.bold,
                                                fontSize: 16.0,
                                              ),
                                              maxLines: 1,
                                            ),
                                            SizedBox(height: 5.0),
                                            Text(
                                              'Rp ${prod.price.toString()}',
                                              style: TextStyle(
                                                  fontFamily: 'Quicksand',
                                                  fontWeight: FontWeight.bold,
                                                  fontSize: 15.0,
                                                  color: Colors.grey),
                                            ),
                                            SizedBox(height: 10.0),
                                            Expanded(
                                                child: InkWell(
                                              onTap: () {
                                                showModalBottomSheet(
                                                    isScrollControlled: true,
                                                    shape:
                                                        RoundedRectangleBorder(
                                                            borderRadius:
                                                                BorderRadius
                                                                    .only(
                                                      topLeft:
                                                          Radius.circular(40),
                                                      topRight:
                                                          Radius.circular(40),
                                                    )),
                                                    context: context,
                                                    builder: (BuildContext bc) {
                                                      return Container(
                                                        height: MediaQuery.of(
                                                                    context)
                                                                .size
                                                                .height *
                                                            .75,
                                                        child: Padding(
                                                          padding:
                                                              const EdgeInsets
                                                                  .all(12.0),
                                                          child:
                                                              SingleChildScrollView(
                                                            child: Column(
                                                              children: <
                                                                  Widget>\[
                                                                Center(
                                                                    child: Image
                                                                        .network(
                                                                            prod.picture)),
                                                                Padding(
                                                                  padding:
                                                                      const EdgeInsets
                                                                              .all(
                                                                          8.0),
                                                                  child: Center(
                                                                    child: Text(
                                                                      '${prod.name}',
                                                                      style: TextStyle(
                                                                          letterSpacing:
                                                                              1.5,
                                                                          fontSize:
                                                                              15,
                                                                          fontWeight:
                                                                              FontWeight.bold),
                                                                    ),
                                                                  ),
                                                                ),
                                                                Padding(
                                                                  padding:
                                                                      const EdgeInsets
                                                                              .all(
                                                                          8.0),
                                                                  child: Center(
                                                                    child: Text(
                                                                        'Rp ${prod.price}'),
                                                                  ),
                                                                ),
                                                                Padding(
                                                                  padding:
                                                                      const EdgeInsets
                                                                              .all(
                                                                          8.0),
                                                                  child: Center(
                                                                    child: Text(
                                                                        '${prod.detail}'),
                                                                  ),
                                                                ),
                                                                Center(
                                                                  child:
                                                                      RaisedButton(
                                                                    child: Text(
                                                                        'Add to cart'),
                                                                    color: Colors
                                                                        .lightGreen,
                                                                    textColor:
                                                                        Colors
                                                                            .white,
                                                                    onPressed:
                                                                        () {
                                                                      _addToCart(
                                                                          prod.id,
                                                                          prod.name,
                                                                          prod.price,
                                                                          prod.picture);
                                                                    },
                                                                  ),
                                                                ),
                                                              \],
                                                            ),
                                                          ),
                                                        ),
                                                      );
                                                    });
                                              },
                                              child: Container(
                                                  width: 175.0,
                                                  decoration: BoxDecoration(
                                                    color:
                                                        prod.price.toString() ==
                                                                'Away'
                                                            ? Colors.grey
                                                            : Colors.lightGreen,
                                                    borderRadius: BorderRadius
                                                        .only(
                                                            bottomLeft:
                                                                Radius.circular(
                                                                    10.0),
                                                            bottomRight:
                                                                Radius.circular(
                                                                    10.0)),
                                                  ),
                                                  child: Center(
                                                    child: Text(
                                                      'Check Detail',
                                                      style: TextStyle(
                                                          color: Colors.white,
                                                          fontFamily:
                                                              'Quicksand'),
                                                    ),
                                                  )),
                                            ))
                                          \],
                                        ),
                                      ),
                                    );
                                  });
                            }
                            return Container(
                              child: Center(
                                child: new CircularProgressIndicator(),
                              ),
                            );
                          },
                        ),
                      ),
                    ),
                  \],
                );
              },
            );
          }
          return Container(
            child: Center(
              child: new CircularProgressIndicator(),
            ),
          );
        },
      ),
    );
  }][1]

Можно ли так сделать? и чем здесь находится запрос для получения данных. Пожалуйста, ребята, помогите мне решить эту проблему, ваш ответ очень поможет мне большое спасибо. Я не знаю, иногда это просто показывает должным образом, но иногда это будет отображаться как эта ошибка в случайном порядке. Я хочу, чтобы мой контент динамически изменялся под названием категории

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...