如何在 Flutter 中为文本着色

Posted

技术标签:

【中文标题】如何在 Flutter 中为文本着色【英文标题】:How to color a text in Flutter 【发布时间】:2021-11-19 02:07:32 【问题描述】:

我试图用红色为我的超重和体重不足添加颜色。你能帮我告诉我该怎么做吗?

代码如下:

import 'dart:math';

class CalculatorBrain 
   CalculatorBrain(this.height, this.weight);

  final int height;
  final int weight;

  double _bmi;

  String calculateBMI() 
    _bmi = weight / pow(height / 100, 2);
    return _bmi.toStringAsFixed(1);
  

  String getResults()
    if (_bmi >= 25) 
      return 'Overweight';
     else if (_bmi > 18.5) 
      return 'Normal';
     else 
      return 'Underweight';
    
  

  String getInterpretation () 
    if (_bmi >= 25) 
      return 'You have a higher than normal weight. Try to exercise more.';
     else if (_bmi > 18.5) 
      return 'You have a normal body weight. Good job!';
     else 
      return 'You have a lower than normal body weight. You can eat a bit more.';
    
  


【问题讨论】:

请明确在超重和超重时要显示为红色的内容。 对于超重和减重我想使用红色 【参考方案1】:

您可以参考下面的共享代码并根据您的要求进行更改

Widget getTextWidget(String text)
   Color textColor;
   if(text.toLowerCase().contains("overweight") || text.toLowerCase().contains("underweight"))
       textColor=Colors.red;
   else textColor=Colors.black;

   return Text(text, 
          style:TextStyle(color: textColor));

在您要显示文本的窗口小部件树中调用 getTextWidget("your text here") 窗口小部件函数

【讨论】:

【参考方案2】:

当你声明一个Text 小部件时,你也可以通过TextStyle 类声明它的style

这里是一个例子:

Text(
 "Hello world!",
  style: TextStyle(
    color: Colors.red,
  )
)

您可以为文本声明其他样式,例如fontWeighttextAlign 等。您可以在docs查看所有内容

在您的情况下,您可以创建另一个返回 TextStyle 或仅返回文本颜色的函数。

Color getResultColor()
    if (_bmi >= 25) 
      return Colors.red;
     else if (_bmi > 18.5) 
      return Colors.black;
     else 
      return Colors.red;
    
  

最后,你的Text 会是这样的:

Text(
 getResults(),
  style: TextStyle(
    color: getResultsColor(),
  )
)

【讨论】:

嘿!我已经更新了我的代码,你能告诉我如何在我的代码中使用它吗?【参考方案3】:

在颤动中,字符串本身不能有颜色。如果要添加可见颜色,可以使用 Text 小部件。文本小部件需要一个字符串,然后你也可以给它一些样式:

return Text(
  getResults(),
    style: TextStyle(
      color: Colors.red,
   ),
);

【讨论】:

你能告诉我如何在我的代码中使用它吗?如果我尝试以下代码,我会遇到错误? 好的,你能描述一下代码执行时的错误吗? 实际上,我在我的应用程序中定义了一个常量页面,我在其中定义了所有常量值,但是当我尝试导入 getResultsColor 代码时,它说当我创建我时已经在我的大脑页面中完成了,它不会从那里导入代码: const kResultTextStyle = TextStyle(color: getResultsColor(), fontSize: 22.0, fontWeight: FontWeight.bold, ); 问题是一个常数,顾名思义,自代码执行开始以来始终相同且不能变化。问题是,当你调用一个函数时,它不是常量,因为如果函数条件例如_bmi 发生变化,常量的值也应该这样做,但它不是因为它是一个常量。因此,您可以使用 final,而不是使用 const。代码:最终 kResultTextStyle = TextStyle( color: getResultsColor(), fontSize: 22.0, fontWeight: FontWeight.bold, );希望对你有帮助,抱歉回答晚了,继续学习flutter?

以上是关于如何在 Flutter 中为文本着色的主要内容,如果未能解决你的问题,请参考以下文章

如何根据某些搜索模式在 unix 中为文本文件着色?

如何在D3中为文本div的特定部分着色?

如何在 Flutter 中为文本添加阴影

使用 C++ 在控制台中为文本着色

如何在 Flutter 中为 Snack Bar 编写一个简单的测试?

如何在Vim插件输出中为单词着色