我有一个这样定义的CircularProgressIndicator:
const corpLoading = CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color> (corpColorPrimary),
);
但是当我在FutureBuilder中使用它时,它无法正确渲染(请参见下面的图片)。有点...切。
我的代码:
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,
),
),
),
),
),
);
}
}
这是什么问题,我该如何解决?我以前从未遇到过这样的问题...
答案 0 :(得分:2)
我认为您只应在用例快照中使用SingleChildScrollView.hasData
答案 1 :(得分:0)
您可以尝试用固定大小的容器包装CircularProgressIndicator
。
或在其中添加填充