我想使用Row
依次显示一些Text
,然后依次显示LinearProgressIndicator
,
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) {
return MaterialApp(
title: 'MaterialApp',
home: Scaffold(
body: SafeArea(child: Row(
children: <Widget>[
Text('Start row'),
LinearProgressIndicator(),
],
),)),
); } }
当我将Text
和LinearProgressIndicator
包裹在Row
中时,问题什么都没显示。
删除Row
时,我只能让Text
显示LinearProgressIndicator
。而且我只能在不使用LinearProgressIndicator
时才显示Row
:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MaterialApp',
home: Scaffold(
body: SafeArea(child: LinearProgressIndicator(),)),
);
}
}
这是没有Row
的应用的外观。
答案 0 :(得分:2)
当LinearProgressIndicator小部件位于行小部件内时,应为其设置宽度。控制台中的错误说明得很清楚:
BoxConstraints强制无限宽度。 这些无效约束由以下代码提供给RenderCustomPaint的layout()函数: 函数,它可能会计算出有问题的无效约束:
每个无界小部件都应包装在诸如扩展或灵活之类的小部件内:
在这种情况下:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MaterialApp',
home: Scaffold(
body: SafeArea(
child: Row(
children: <Widget>[
Center( // this widget is not nessesary
child: Text('Some text'),
),
Expanded(child: LinearProgressIndicator()),
],
),
)),
);
}
}
还有一个与此事有关的discussion here。