首页 > 解决方案 > 如何使用文本在一行中显示 LinearProgressIndicator

问题描述

我想使用 aRow来显示一些,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(),
            ],
          ),)),
    );   } }

问题是当我将Textand包装LinearProgressIndicatorRow.

我只能在删除时Row显示。而且我只能在不这样使用 时才能显示:TextLinearProgressIndicatorLinearProgressIndicatorRow

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.

无行

标签: dartflutter

解决方案


当 LinearProgressIndicator 小部件位于行小部件内时,您应该为其设置宽度。控制台中的错误解释得很清楚:

BoxConstraints 强制无限宽度。这些无效约束由以下函数提供给 RenderCustomPaint 的 layout() 函数,该函数可能计算了有问题的无效约束:

每个无界小部件都应该包含在 Expanded 或 Flexible 等小部件中:

在这种情况下:

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()),
          ],
        ),
      )),
    );
  }
}

这里也有关于这个问题的讨论


推荐阅读