我正在尝试以不同的颜色显示一些文本。我了解了该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)
我现在不需要任何复杂的样式。在深色模式下,文本应为白色,在浅色模式下,文本应为黑色。就这样。但问题是,文本始终是白色的。为什么它不根据亮度设置进行调整?有什么办法可以做到这一点吗?请帮我...
找到了解决方案。
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)
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |