Flutter: RenderBox не выкладывался при работе с ListView - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь отобразить в Listviews, один горизонтальный, а другой вертикальный. Горизонтальный работает, но вертикальный ListView показывает эту ошибку «RenderBox не был размечен».

Я прочитал некоторые другие ответы об этой ошибке здесь на stackoverflow, но все еще не могу заставить его работать.

когда я запускаю его, я получаю эту ошибку "RenderBox не был выложен: RenderRepaintBoundary # 6bd44 relayoutBoundary = up14 NEEDS-PAINT 'package: flutter / src / render / box.dart': "

import 'package:flutter/material.dart';
import 'package:appone/screens/detail.dart';
import 'package:http/http.dart' as http;
import 'package:appone/screens/main_drawer.dart';
import 'dart:convert';
import 'package:appone/screens/wp-api.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Teds Pharma',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Teds Pharma'),
        ),
        drawer: MainDrawer(),

        body: SingleChildScrollView(
          child: Padding(
            padding: const EdgeInsets.only(left: 22.0, right: 22, top: 40),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                SizedBox(
                  height: 20,
                ),
                Container(
                  width: double.infinity,
                  height: 60,
                  margin: EdgeInsets.symmetric(horizontal: 0),
                  decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.circular(8),
                      boxShadow: [
                        BoxShadow(
                            color: Colors.black.withOpacity(.12),
                            offset: Offset(0, 10),
                            blurRadius: 30)
                      ]),
                  child: Center(
                    child: Padding(
                      padding: EdgeInsets.only(left: 18, right: 12),
                      child: TextField(
                        decoration: InputDecoration(
                            border: InputBorder.none,
                            hintText: "Search...",
                            hintStyle: TextStyle(fontSize: 30),
                            suffixIcon: Icon(Icons.search)),
                      ),
                    ),
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.only(top: 18.0, bottom: 18),
                  child: Container(
                    height: 180,
                    child: FutureBuilder(
                        future: fetchfiveWpPosts(),
                        builder: (context, snapshot) {
                          if (snapshot.hasData) {
                            return ListView.builder(
                                itemCount: snapshot.data.length,
                                scrollDirection: Axis.horizontal,
                                itemBuilder: (BuildContext context, int index) {
                                  Map wppost = snapshot.data[index];
                                  var imageurl =
                                      wppost['acf']['store_logo']['url'];
                                  return GestureDetector(
                                    onTap: () {
                                      Navigator.of(context).push(
                                          MaterialPageRoute(
                                              builder: (_) => Detail()));
                                    },
                                    child: Padding(
                                      padding: const EdgeInsets.all(8.0),
                                      child: Container(
                                        width: 120,
                                        height: 160,
                                        decoration: BoxDecoration(
                                          borderRadius:
                                              BorderRadius.circular(16),
                                        ),
                                        child: ClipRRect(
                                          borderRadius:
                                              BorderRadius.circular(8),
                                          child: FadeInImage.assetNetwork(
                                              placeholder: 'assets/bg.jpg',                                            
                                              image: imageurl,
                                              fit: BoxFit.cover,),
                                        ),
                                      ),
                                    ),
                                  );
                                });
                          }
                          return Center(child: CircularProgressIndicator());
                        }),

                  ),

                ),
              Padding(padding: const EdgeInsets.only(top: 18.0, bottom: 18),
                child: Container(
        child: FutureBuilder(
          future: fetchfiveWpPosts(),
          builder: (context,snapshot){
            if(snapshot.hasData){
              return ListView.builder(
                itemCount: snapshot.data.length,
                scrollDirection: Axis.vertical,
                itemBuilder: (BuildContext context, int index){
                  Map wppost = snapshot.data[index];
                  var imageurl = wppost['acf']['store_logo']['url'];
                return Card(

                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      //Image.network(imageurl),

                      FadeInImage.assetNetwork(placeholder: 'assets/loading.gif', image: imageurl),

                      Text(wppost['title']['rendered']),
                    ],
                  ),
                );
                }, 
              );
            }
            return CircularProgressIndicator();
          },
        ),

      ),
              ),
                SizedBox(
                  height: 30,
                )
              ],
            ),
          ),
        ));
  }
}

1 Ответ

0 голосов
/ 22 апреля 2020

Это часто случается, когда вы пытаетесь поместить прокручиваемый виджет в виджет бесконечной высоты или виджет бесконечной высоты (Column) в прокручиваемый (SingleChildScrollView, ListView).

Это означает, что вы Вы пытаетесь использовать SingleChildScrollVie w> Column> ListView> Column

Вы должны добавить следующее свойство к Column и ListView

Widget build(BuildContext context) {
    return SingleChildScrollView(
    child: Column(
      mainAxisSize: MainAxisSize.min, // Use children total size
    children: [
      ListView.builder(
      itemCount : 10,
        shrinkWrap: true, // Use  children total size
        itemBuilder : (a, b)=>Text("ffffffffffff")
      )
    ],
    ),);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...