滚动行为中的Text和ListView抖动

时间:2018-07-13 10:43:43

标签: flutter flutter-layout

我正在尝试抖动,但遇到一个问题。我有一个文本,其结果来自服务,一个ListView(构建器)显示这些结果(作为卡片使用,以便具有漂亮的框,如布局)。

我的目标是,随着用户滚动列表,页面(文本)的结果部分将消失。

我按照https://docs.flutter.io/flutter/widgets/SingleChildScrollView-class.html中的描述尝试过SingleChildScrollView,但是它没有用。

截屏: enter image description here

任何见解都会非常有帮助。预先感谢。

更新(小部件树)

 Widget build(BuildContext context) {
return new Scaffold(
  body: new Column(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: <Widget>[
      new Container(
        padding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0),
        child: new RichText(
          text: new TextSpan(
            children: <TextSpan>[
              new TextSpan(
                text: this.model == null
                    ? "0"
                    : this.model.length.toString(),
                style: new TextStyle(
                  fontSize: 14.0,
                  fontWeight: FontWeight.bold,
                  color: Colors.black87,
                ),
              ),
              new TextSpan(
                text: ' Results',
                style: new TextStyle(
                  fontSize: 14.0,
                  color: Colors.black87,
                ),
              ),
            ],
          ),
        ),
      ),
      new Expanded(
        child: new RefreshIndicator(
          key: refreshKey,
          child: new ListView.builder(
            itemCount: this.model?.length,
            itemBuilder: (BuildContext context, int index) {
              final Model model= this.model[index];
              return new Card(child: new Text(model.id.toString()),);
            },
          ),
          onRefresh: _handleRefresh,
        ),
      ),
    ],
  ),
);

}

1 个答案:

答案 0 :(得分:1)

您可以尝试使用以下给定的结构,但看起来不太hacky:p

  Widget build(BuildContext context) {
    List<String> results = List.generate(40, (int i) => "Result $i");
    return Scaffold(
        appBar: AppBar(title: Text("Test Screen")),
        body: SingleChildScrollView(
         child: Container(
           width: double.infinity,
          child: Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
            Text("RESULTS", style: TextStyle(fontWeight: FontWeight.bold)),
            Column(
              mainAxisSize: MainAxisSize.min,
              children: results.map((String s) => Container(
                width: double.maxFinite,
                child: Card(child:Text(s)))).toList(),
            ),
          ]),
        )
      )
    );
  }