Flutter CircularprogressIndicator无法正确显示

时间:2020-05-13 08:54:25

标签: flutter

我有一个这样定义的CircularProgressIndicator:

const corpLoading = CircularProgressIndicator(
  valueColor: AlwaysStoppedAnimation<Color> (corpColorPrimary),
);

但是当我在FutureBuilder中使用它时,它无法正确渲染(请参见下面的图片)。有点...切。 CircularProgressIndicator is'nt displayed correctly

我的代码:

class ScreenTextViewer extends StatelessWidget {
  final String _title;
  final String _text;
  final String _resourceFileToLoad;

  ScreenTextViewer({
    @required String title,
    String text,
    String resourceFileToLoad,
    Key key
  }) :  assert(title != null && title != "" && ((text != null && text != "") || (resourceFileToLoad != null && resourceFileToLoad != ""))),
        _title = title,
        _text = text,
        _resourceFileToLoad = resourceFileToLoad,
        super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("$_title"),
      ),
      body: Center(
        child: Scrollbar (
          child: SingleChildScrollView(
            child: _text == null
                ? FutureBuilder<String>(
                    future: rootBundle.loadString(_resourceFileToLoad),
                    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
                      // return corpLoading; // same error here
                      if (snapshot.connectionState != ConnectionState.done) {
                        return corpLoading;
                      }
                      if (snapshot.hasError) {
                        return Text('Error: ${snapshot.error}');
                      }
                      if (!snapshot.hasData){
                        return const Text('Error: Nothing to show');
                      }
                      // here is all good
                      return RichText(
                          text: TextSpan(
                            text: snapshot.data.toString(), // text: "$snapshot.data",
                            style: DefaultTextStyle.of(context).style,
                          ),
                        );
                    })
                : RichText(
                    text: TextSpan(
                      text: "$_text",
                      style: DefaultTextStyle.of(context).style,
                    ),
                  ),
          ),
        ),
      ),
    );
  }
}

这是什么问题,我该如何解决?我以前从未遇到过这样的问题...

2 个答案:

答案 0 :(得分:2)

我认为您只应在用例快照中使用SingleChildScrollView.hasData

答案 1 :(得分:0)

您可以尝试用固定大小的容器包装CircularProgressIndicator。 或在其中添加填充