首页 > 解决方案 > 在 Flutter 中使用 Marquee 包时出现错误

问题描述

目标

使其能够无错误地使用 Marquee()。

我做了什么

我安装了选框包

写代码:

import 'package:marquee/marquee.dart';

// In Column()
Marquee(
                                                text: "Exampleeeeeeeeeeeeeeeeeee",
                                                pauseAfterRound:
                                                    const Duration(
                                                        seconds: 1),
                                                style: const TextStyle(
                                                    fontSize: 20),
                                              ),

错误

我在调试控制台中没有看到任何错误,但我在 dart 文件中看到了彩色代码:

  // errors_patch.dart

  static _doThrowNew(int assertionStart, int assertionEnd, Object? message)
      native "AssertionError_throwNew";

我试过的

我发现我可以通过使用 Expanded 来解决这个错误。所以我像这样用 Expanded 包围了 Marquee

                                              Expanded(
                                                  child: Marquee(
                                                text: "Exampleeeeeeeeeeeeeeeee",
                                                pauseAfterRound:
                                                    const Duration(
                                                        seconds: 1),
                                                style: const TextStyle(
                                                    fontSize: 20),
                                              )),

但错误仍然发生。

════════ Exception caught by rendering library ═════════════════════════════════
RenderBox was not laid out: RenderViewport#96fb3 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
'package:flutter/src/rendering/box.dart':
package:flutter/…/rendering/box.dart:1
Failed assertion: line 1999 pos 12: 'hasSize'

The relevant error-causing widget was
Marquee
lib\favorites.dart:167
════════════════════════════════════════════════════════════════════════════════

环境

$flutter 医生 -v 结果:

[√] Flutter (Channel beta, 2.6.0-5.2.pre, on Microsoft Windows [Version 10.0.22000.282], locale ja-JP)
    • Flutter version 2.6.0-5.2.pre at D:\src\flutter_windows_2.5.0-stable\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 400608f101 (6 weeks ago), 2021-09-15 15:50:26 -0700
    • Engine revision 1d521d89d8
    • Dart version 2.15.0 (build 2.15.0-82.2.beta)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at D:\Android
    • Platform android-30, build-tools 29.0.3
    • Java binary at: D:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 4.2)
    • Android Studio at D:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6842174)

[√] VS Code (version 1.61.2)
    • VS Code at C:\Users\yukik\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.27.0

[√] Connected device (3 available)
    • Android SDK built for x86 (mobile) • emulator-5554 • android-x86    • Android 10 (API 29) (emulator)
    • Chrome (web)                       • chrome        • web-javascript • Google Chrome 95.0.4638.54
    • Edge (web)                         • edge          • web-javascript • Microsoft Edge 95.0.1020.40

• No issues found!

标签: flutterdart

解决方案


将其添加到此层次结构中 Column Row Flexible Marquee 您正在尝试在没有有限高度的列小部件内使用扩展。所以它会抛出一个错误。


推荐阅读