颤动:最小高度,展开和SingleChildScrollView?

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

我不知道如何在Flutter中进行此布局。我想要实现的是:

  • 我有一列,其中包含一个固定高度的子级(标题文本小部件)和两个扩展小部件。我使用扩展功能是因为我希望每个人都共享剩余的一半屏幕。
  • 当方向更改为横向时,没有足够的空间来正确显示展开的窗口小部件的内容。因此,我要在这两个小部件上应用最小高度,并使它变为可滚动。

我希望这是有道理的-我不知道如何实施。我尝试了很多组合的Expanded,Flexible,Column,SingleChildScrollView,min列轴大小等。但是我尝试的所有结果都会导致某种无限的高度异常。这有可能吗?

以下是一些示例代码:以下代码工作正常。如何在两个占位符上实现滚动和最小高度?

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: <Widget>[
            Text("Title"),
            // I need to apply a minimum height on these two widgets,
            // and it should be scrollable if necessary:
            Expanded(
              child: Placeholder(),
            ),
            Expanded(
              child: Placeholder(),
            )
          ],
        ),
      ),
    );
  }
}

flutter flutter-layout
1个回答
0
投票

这对我有用:

import 'dart:math'; // for max function

// Add the following around your column
LayoutBuilder(
  builder: (BuildContext context, BoxConstraints constraints) {
    return SingleChildScrollView(
      child: ConstrainedBox(
        constraints: BoxConstraints.tightFor(height: max(500, constraints.maxHeight)),
        child: Column(), // your column
      ),
    );
  },
);

用所需的最小高度替换500

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