Flutter:RichText 不适用于主题

mig*_*001 5 richtext flutter

我正在尝试以不同的颜色显示一些文本。我了解了该RichText小部件并按如下方式使用它;

Future<List<TextSpan>> listOfEventsAtDay({String day, String monthNum}) async {
  final result = await DatabaseHelper.instance
      .queryForEventsAtDay(mnth: monthNum, dy: day);
  List<TextSpan> textSpans = [];
  int count = result.length;
  for (int i = 0; i < count; i++) {
    final String string = "-${result[i]['year']}: ${result[i]['title']}\n";
    textSpans.add(TextSpan(
        text: string,
        ));
  }

  return textSpans;
}
Run Code Online (Sandbox Code Playgroud)

稍后会调用;

ListTile( title: RichText(text: TextSpan(children: snapshot.data),
Run Code Online (Sandbox Code Playgroud)

我现在不需要任何复杂的样式。在深色模式下,文本应为白色,在浅色模式下,文本应为黑色。就这样。但问题是,文本始终是白色的。为什么它不根据亮度设置进行调整?有什么办法可以做到这一点吗?请帮我...

mig*_*001 5

找到了解决方案。

style: DefaultTextStyle.of(context).style
Run Code Online (Sandbox Code Playgroud)

完整片段;

Future<List<TextSpan>> listOfEventsAtDay({String day, String monthNum, BuildContext context}) async {
  final result = await DatabaseHelper.instance
      .queryForEventsAtDay(mnth: monthNum, dy: day);
  List<TextSpan> textSpans = [];
  int count = result.length;
  for (int i = 0; i < count; i++) {
    final String string = "-${result[i]['year']}: ${result[i]['title']}\n";
    textSpans.add(TextSpan(
        text: string,
        style: DefaultTextStyle.of(context).style,
        ));
  }

Run Code Online (Sandbox Code Playgroud)

这解决了它。


小智 5

您可以使用Text.rich代替RichText. Text.rich使用默认的 TextStyle。

https://api.flutter.dev/flutter/widgets/Text/Text.rich.html

Text.rich(
  TextSpan(
    text: 'Welcome'
    children: [
      TextSpan(text: 'to the'),
      TextSpan(
        text: 'Jungle',
        style: TextStyle(fontWeight: FontWeight.bold),
      ),
    ],
  ),
)
Run Code Online (Sandbox Code Playgroud)