如何在文本行中显示LinearProgressIndicator

时间:2018-08-18 10:57:45

标签: dart flutter

我想使用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(),
            ],
          ),)),
    );   } }

当我将TextLinearProgressIndicator包裹在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的应用的外观。

without row

1 个答案:

答案 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