列底部的弹性

问题描述 投票:0回答:1

我正在尝试在包含其内容的列中放置PageView.builder,并在具有底部容器的列中进行布局。由于综合浏览量不知道其子级的大小,因此必须将其包装在“灵活”或“扩展”小部件中。灵活使孩子能够保持其大小,但使整个PageView都位于顶部。在它上面添加一个Expanded在PageView和底部容器之间留出空间,我不明白为什么。这是代码:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.end,
      children: <Widget>[
        Expanded(
          child: Container(),
        ),
        Flexible(
          child: PageView.builder(
            itemCount: 6,
            itemBuilder: (BuildContext context, int i) {
              return Wrap(
                children: <Widget>[
                  Container(
                    margin: EdgeInsets.all(10),
                    color: Colors.red,
                    height: 100,
                    width: MediaQuery.of(context).size.width,
                  ),
                ],
              );
            },
          ),
        ),
        Container(
          color: Colors.blue,
          height: 50,
          width: MediaQuery.of(context).size.width,
          margin: EdgeInsets.all(10),
        ),
      ],
    );
  }
}
flutter
1个回答
0
投票

[当您使用包装小部件包装容器时,该容器折叠到最小大小,在您看来,容器底部的另一个空间实际上是包装小部件本身的剩余部分;

要使容器占据包装小部件的所有空间,您需要将高度从100更改为height: double.maxFinite,

© www.soinside.com 2019 - 2024. All rights reserved.