Как сделать поле, которое будет расширяться, чтобы соответствовать содержимому, но перестало расширяться, когда оставшееся пространство заполнено?

Я в трепете. У меня есть layout, у которого есть pageview.builder, и на каждой странице есть карточка. Я бы хотел, чтобы карточка соответствовала содержимому, расширяясь для карточек с большим содержанием, до тех пор, пока карточка не заполнит остальную часть страницы, после чего я бы хотел, чтобы она начала прокручиваться. Я потратил несколько часов, пробуя разные варианты размещения layouts, но не могу найти комбинацию для достижения желаемого эффекта.

code выглядит примерно так:

child: new Column(
        children: [

          SizedBox(
            height: 25.0,
          ),
          Image.asset(
            "images/image.png",
            scale: 0.1,
            height: 100.0,
          ),
          new ConstrainedBox(
              constraints: BoxConstraints(maxHeight: 550.0),
              child: PageView.builder(
                controller: PageController(viewportFraction: 0.9),
                itemBuilder: (BuildContext context, int index){
                  DayInfo thisDay = AllDaysInfo[index];
                      child: Material(
                          child: new Text(thisDay.info),
                          )
                      )
                 )
        ]
),

(parentheses может быть неверным! Урезал свой код, чтобы было легче увидеть, что я делаю)

Итак, я хочу удалить ConstrainedBox, который, по сути, заставляет его быть 550 высоким. Я хочу, чтобы он заполнил оставшееся пространство, но перестал расти, когда доберется туда!

Любые идеи?

Майк


person MikeCoverUps    schedule 28.06.2018    source источник


Ответы (1)


Итак - я разобрался! Извините, это было глупо. По сути, все, что мне нужно было сделать, это добавить виджет Expanded вместо ConstrainedBox в приведенном выше примере и поместить виджет SingleChildScrollView вокруг виджета Material. Работает шарм!

child: new Column(
        children: [

          SizedBox(
            height: 25.0,
          ),
          Image.asset(
            "images/image.png",
            scale: 0.1,
            height: 100.0,
          ),
          new Expanded(
              child: PageView.builder(
                controller: PageController(viewportFraction: 0.9),
                itemBuilder: (BuildContext context, int index){
                  DayInfo thisDay = AllDaysInfo[index];
                      child: SingleChildScrollView
                             child: Material(
                                    child: new Text(thisDay.info),
                                    )
                             )
                      )
                 )
        ]
),
person MikeCoverUps    schedule 02.07.2018