flutter: заполнить оставшееся пространство экрана списком - PullRequest
0 голосов
/ 09 мая 2020

У меня есть это дерево виджетов:

Scaffold
  AppBar
  Column
    Center
    SingleChildScrollView
    FutureBuilder
       Container
       Flex
          direction: Axis.vertical,
          children: <Widget>[
          Row(),
          .....
          UserCommentsWidget(id)
          ]

В UserCommentsWidget я использую будущий конструктор для загрузки данных из веб-службы и отображения списка:

  Widget build(BuildContext context) {
    return FutureBuilder<UserCommentModel>(
      future: _userCommentsFuture,
      builder: (ctx, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return Center(
            child: CircularProgressIndicator(),
          );
        } else if (!snapshot.hasError && snapshot.hasData) {
          return snapshot.data.data.list.length != 0
              ? Column(
                  children: <Widget>[
                    Row(),  
                    Container(
                    ListView.builder(
                        itemCount: snapshot.data.list.length,
                        itemBuilder: (ctx, index) {
                          return 
                           commentItems(snapshot.data.data.list[index]);
                        }),
                     )
                  ],
                )

Но Я получил эту ошибку:

════════ Exception caught by rendering library ═════════════════════════════════════════════════════
RenderBox was not laid out: RenderFlex#c406c relayoutBoundary=up15 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1694 pos 12: 'hasSize'

Я поместил Listview в Expanded , но у меня такая же ошибка, как я могу заполнить оставшееся место с помощью listview?

Ответы [ 3 ]

0 голосов
/ 09 мая 2020

Я изменил дерево виджетов на это:

Scaffold
  AppBar
  Column
    Expanded
      FutureBuilder
       Container
       Column
          children: <Widget>[
          Row(),
          .....
          Expanded
             UserCommentsWidget(id)
          ]

и теперь все в порядке. Спасибо всем, ребята

0 голосов
/ 10 мая 2020

Flex и Expanded могут помочь вам в этом случае.

Flex(
direction: Axis.vertical,
children: <Widget>[
Expanded(child: ListView.builder(//IMPLEMENT YOUR LIST//))
])
0 голосов
/ 09 мая 2020

Поместите ListView.builder внутри Expanded, чтобы он заполнил пространство.

...