主应用程序屏幕没有这个问题,所有的文本显示他们应该。

然而,在新屏幕中,所有的文本部件下面都有一些奇怪的黄线/双线。

你知道为什么会这样吗?


问题是有没有脚手架。 Scaffold是材料应用程序(AppBar, Drawer之类的东西)的助手。但你并没有被迫使用Material。

你缺少的是一个DefaultTextStyle的父实例:

DefaultTextStyle(
  style: TextStyle(...),
  child: Text('Hello world'),
)

各种小部件添加一个来更改默认的文本主题,如脚手架,对话框,AppBar, ListTile,…

它是DefaultTextStyle,它允许你的应用栏标题在默认情况下加粗。


添加材质小部件作为根元素。

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

您所需要做的就是提供一个Material小部件,或者一个内部覆盖这个小部件的Scaffold。你可以通过以下方法做到这一点:

使用材料(简单且更好): 材料( 颜色:颜色。transparent, // <——如果需要,添加这个 孩子:文本(“你好”), ) 设置文本。样式属性: 文本( “你好”, style: TextStyle(decoration: TextDecoration.none), //设置 ) 提供支架: 支架(身体:文本('你好'))


修复使用英雄时黄色文本的问题:

就像aaronvargas提到的,当你在两边使用Hero时,你可以把你的child包在Material中。例如:

Hero(
  tag: 'fooTag',
  child: Material( // <--- Provide Material
    type: MaterialType.transparency,
    child: YourWidget(),
  ),
);

你应该在main中添加Material和Scaffold部件。飞镖文件

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

你也可以使用装饰:TextDecoration。无删除下划线


文本样式有一个可以设置为none的装饰参数

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

另外,正如其他人提到的,如果你的文本小部件在脚手架或材料小部件的树中,你就不需要装饰文本样式了。


只是给这些答案加上了另一种方式。

将根小部件包装在DefaultTextStyle小部件周围。这里不需要修改每个Text小部件。

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

希望它能帮助到别人。


还有另一种解决方案,特别是当您使用多个页面包装在main下面时。你可以这样做:

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

这将删除在包装器下引用/使用的任何页面中出现的文本下的黄线。


您只需要添加Material根小部件。

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

我推荐这种方法,因为你可以做一次,它将覆盖你的整个应用程序。

在MaterialApp的构建器下添加DefaultTextStyle,如下所示:

child: MaterialApp(      
  ...
  ...
  theme: yourThemeData,
  builder: (context, child) => DefaultTextStyle(
    style: yourThemeData.textTheme.bodyText1,
    child: child,
  ),
),

通过这样做,我们不需要每次使用showDialog或Overlay时都指定样式或使用DefaultTextTheme。


问题:你的小部件没有默认的文本样式,

解决办法:把它包起来!

DefaultTextStyle(
    style: TextStyle(),
    child: yourWidget,
  );

记住,如果你不设置任何颜色,默认文本颜色是白色!


黄线来自_errorTextStyle。文档声明你应该定义一个DefaultTextStyle父类(或者使用Material,它可以为你做这件事):

MaterialApp使用这个TextStyle作为它的DefaultTextStyle来鼓励开发者有意识地使用他们的DefaultTextStyle。 在材质设计中,大多数文本小部件都包含在材质小部件中,这设置了一个特定的DefaultTextStyle。如果您看到使用这种文本样式的文本,请考虑将文本放在Material小部件(或另一个设置DefaultTextStyle的小部件)中。

开发没有素材的Flutter应用程序不是大多数人做的事情,但如果这是你的用例,你应该使用DefaultTextStyle。

与公认的答案相反,Theme没有设置DefaultTextStyle,因此它不能解决您的问题。Scaffold确实解决了这个问题,因为它包含了Material,而Material又定义了DefaultTextStyle,但是对于对话框、英雄等来说,Scaffold有点超出了你的需要。

要永久地解决整个应用程序的这个问题,你可以在MaterialApp构建器中设置DefaultTextStyle。这解决了应用程序的所有组件的问题,而不仅仅是你正在处理的当前屏幕。


文本有一个隐藏的默认文本样式 .出现问题是因为您不能将此提供给任何父小部件,例如Scaffold。 文本小部件采用默认样式。 对于你的解决方案,你可以像这样改变DefaultTextStyle。

DefaultTextStyle(
    style: TextStyle(),
    child: yourTextWidget,
  );

或者只是包装到脚手架,脚手架是一个小部件。它提供了脚手架 用于应用程序中的页面。 像这样

 MaterialApp(
  home: Scaffold(
    body: Text('Wakey Wakey!'),
  ),
);

要了解更多信息,请浏览这个颤振官方视频。

黄色下划线文本|解码颤振


之前

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Center(
          child: Text(
            "21:34",
            style: TextStyle(fontSize: 50),
          ),
        ),
        Center(
          child: Text(
            "Wakey - wakey",
            style: TextStyle(fontSize: 20),
          ),
        )
      ],
    );
  }

后(解决方案):

这里用脚手架小部件包装当前顶部或父小部件

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Center(
            child: Text(
              "21:34",
              style: TextStyle(fontSize: 50),
            ),
          ),
          Center(
            child: Text(
              "Wakey - wakey",
              style: TextStyle(fontSize: 20),
            ),
          )
        ],
      ),
    );
  }

完整代码:Dartpad或Live代码

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(home: sta()));

class sta extends StatefulWidget {
  const sta({Key? key}) : super(key: key);

  @override
  State<sta> createState() => _staState();
}

var isShow = false;


class _staState extends State<sta> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Center(
            child: Text(
              "21:34",
              style: TextStyle(fontSize: 50),
            ),
          ),
          Center(
            child: Text(
              "Wakey - wakey",
              style: TextStyle(fontSize: 20),
            ),
          )
        ],
      ),
    );
  }
}

你也可以把你的脚手架作为你的MaterialApp的家。这对我很管用。

return MaterialApp(
  home: Scaffold(
    body: Container(
      child: SingleChildScrollView(child: Text('Test')),
    ),
  ),
);

使用DefaultTextStyle()小部件设置文本的文本样式。

DefaultTextStyle(
  style: kTempTextStyle,
  child: Text('Hello world'),
)

你可以给你自己的文本样式,因为你想。

const kTempTextStyle = TextStyle(
  fontFamily: 'Spartan MB',
  fontSize: 100.0,
  decoration: null,
);