Flutterのテキストウィジェットの下の黄色い線?


123

私の最初のフラッターアプリに取り組んでいます。アプリのメイン画面にはこの問題はありません。すべてのテキストが正しく表示されます。

しかし、私が開発しているこの新しい画面では、すべてのテキストウィジェットの下に奇妙な黄色の線/二重線があります。

なぜこれが起こっているのかについてのアイデアはありますか?

イエローライン


コードを追加できますか?
aziza

14
その理由は、このページに足場がないためだと思います。
aziza

@aziza私はあなたが正しいと思います。このページには足場がありません。私はそれが問題であるのではないかと疑ったが、それをチェックすることを続けなかった。足場がないときになぜこれが起こるのかに関するアイデアはありますか?必要だとは思いませんでした。_body_パラメータのみを使用するつもりでも、とにかくScaffoldを使用する必要がありますか?
dasfima

2
小さなウィジェットを個別のクラスにリファクタリングしている場合でも、各ページにはScaffoldが必要です。これらのウィジェットは、どこかでScaffoldの親になるはずです。このようにテキストに下線が引かれているのか、それとも問題なのかはわかりませんが、結局、Scaffold内でページを作成する必要があります。
アジザ

3
または、必要ない場合は、ウィジェットでScaffold囲むことができますTextMaterial
realpac

回答:


154

問題はありませんScaffoldか。 Scaffold以下のためのヘルパーですMaterialアプリケーション(AppBarDrawerものの、その種が)。しかし、あなたは使用を強制されませんMaterial

不足しているのは、Theme親としてのインスタンスです。

なぜそれが重要なのですか?(showDialogたとえばを使用して)モーダルを開発する場合、同じ問題に直面するためです。しかし、足場は不透明なフルスクリーンウィジェットです!そして、あなたはあなたのモーダルにそれを望まないのは明らかです。

テーマインスタンスを導入する方法はたくさんあります。Material Appでは、これは通常、Materialウィジェットをインスタンス化することによって実現されます。そして、何を推測しますか?Scaffoldあなたのために作成します。しかし、Dialogあまりにも!


3
ヒーローについても覚えておいてください。「飛行中」は親から切断されるためMaterial、ヒーローの子(両側)として(または任意のテーマ)を追加すると、トランジションで修正されます。github.com/flutter/flutter/issues/30647
aaronvargasを

79

Materialルート要素としてウィジェットを追加します。

@override
  Widget build(BuildContext context) {
    return Material(
        type: MaterialType.transparency,
        child: new Container(

1
textまたはウィジェットで囲むwidgetMaterial役に立ちました。ルート要素としてマテリアルを追加しても、私の場合は役に立ちませんでした
MMK

1
ありtype: MaterialType.transparency、なしのどちらでも機能します。
sassman

28

Scaffold単純なMaterialウィジェットのようなマテリアルテーマを提供する(通常はより良い)またはその他のコンポーネントを使用できます。

次に例を示します。いずれかを使用してください。

var text = Scaffold(body: Text("Hi"),);
var text2 = Material(child: Text("Hi"),);

回避策として、次のものを使用できます。

Text(
  'Your text',
  style: TextStyle(decoration: TextDecoration.none), // removes yellow line
)

16

テキストスタイルには、なしに設定できる装飾引数があります

Text("My Text",
  style: TextStyle(
    decoration: TextDecoration.none,
  )
);

また、他の人が述べたように、テキストウィジェットがスキャフォールドまたはマテリアルウィジェットのツリーにある場合、装飾テキストスタイルは必要ありません。



6

私が遭遇する別の方法をこれらの答えに追加するだけです。

ルートウィジェットをDefaultTextStyleウィジェットでラップします。ここでは、各テキストウィジェットを変更する必要はありません。

DefaultTextStyle(
    style: TextStyle(decoration: TextDecoration.none), 
    child : Your_RootWidget
)

それが誰かを助けることを願っています。


2

main.dartファイルにMaterialウィジェットとScaffoldウィジェットを追加する必要があります

 MaterialApp(
  home: Scaffold(
    body: Text('Hello world'),
  ),
);

2

これには別の解決策があります。特に、main.dartファイルにラップされた複数のページを使用している場合は、次のようなことができます。

  child: MaterialApp(
    home: Material(child: Wrapper()),
  ),

これにより、ラッパーで参照/使用されるページに存在するテキストの下の黄色い線が削除されます。


1

マテリアルルートウィジェットを追加するだけです。

      @override
       Widget build(BuildContext context) {
      return Material(
         child: new Container(),
        );
       }

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.