在Flutter中使屏幕的一部分可滚动

时间:2019-03-18 10:42:33

标签: flutter user-experience flutter-layout

我只希望屏幕的一部分可滚动。当ListView中的项目数超过4或5时,我将无法在此列表视图下放置任何小部件。我不确定是否有办法包装listview的所有内容以使其可滚动。

package test1
func Func1() {
    test2.Func2()
    fmt.println("func1")
}

这是我的ListView,这就是用户界面的外观

here

问题是当RadioTile的数量超过8个时; textField和Button被推出屏幕。 我想知道使整个屏幕可滚动是否良好? 还是仅使屏幕一部分包含RadioTiles Scrollable?

谢谢

2 个答案:

答案 0 :(得分:2)

有两点要考虑:

  1. 如果您打算在RadioTiles下还有更多字段,以及Google Listing URL和Save按钮,那么保持整个屏幕可滚动可能是一个不错的选择。

    < / li>
  2. 另一方面,如果只是RadioTiles下面的两件事,那么最好只保留RadioTile列表可滚动。这样,TextField和“保存”按钮将始终可供用户访问,而无需滚动。

  3. 此外,您可以根据字段的优先级决定滚动。如果TextField和“保存”按钮具有更高的优先级,那么最好始终在屏幕上可见它们。

要仅使屏幕的一部分可滚动,可以将ListView包裹在具有一定固定高度的Container中,以便它仅在这些边界内滚动。

您还需要将physics属性更改为AlwaysScrollableScrollPhysics()

示例-

Container(
  height: 300.0 //Your custom height
  child: ListView(
    shrinkWrap: true,
    physics: AlwaysScrollableScrollPhysics(),
    children: _getListings(businessListing),
  ),
)

答案 1 :(得分:0)

要完成thebuggycoder answer,如果您只想让屏幕的一部分保持可滚动状态,但要使底部元素的高度保持可变,则可以将ListView嵌入{{1 }},如下所示:

Expanded

您在做什么,基本上是在告诉您的Column有2个(或更多)元素,其中每个元素通常占用其所需的空间,除了Column( children: [ Expanded( child: ListView( children: _getListings(businessListing), ), ), Container( child: Text('This element must stay at the bottom'), ), ], ); 元素之外的元素将占用“ Column中剩余的最大空间。