在 flutter 中使用 RichText 对齐文本
Aligning text using RichText in flutter
Text UI
我想使用 RichText 小部件在 flutter 中创建类似这样的 UI。你能帮我写代码吗?我不明白如何设计这样的 UI?
使用WidgetSpan
给出偏移量得到上标。操作如下:
Container(
padding: EdgeInsets.all(10),
child: Center(
child: RichText(
text: TextSpan(children: [
WidgetSpan(
child: Transform.translate(
offset: const Offset(0.0, -7.0), child:
Text("Rs"))),
TextSpan(
text: '1,500',
style: TextStyle(color: Colors.black,
fontSize: 18,fontWeight:FontWeight.bold),
recognizer: TapGestureRecognizer()
..onTap = () {
// navigate to desired screen
})
]),
),
))
或者如果你想在上标文本上使用识别器,那么你应该使用类似的东西:
RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Transform.translate(
offset: Offset(0.0, -7.0),
child: RichText( // use RichText instead ot Text if you need recognizer on a superscripted text
text: TextSpan(
text: "superscripted text",
//style: textStyle,
recognizer: tapGestureRecognizer,
),
)
),
),
],
),
);
重要提示:如果您需要对上标文本进行识别,请在内部块中使用 RichText 而不是 Text。
(
更简单的版本可以在 TextStyle 中使用 fontFeatures,但它没有提升我的解决方法中的文本,所以它对我来说无法正常工作。
TextStyle textStyle = TextStyle(...
fontFeatures: (isSup ? [FontFeature.subscripts()] : (isSub ? [FontFeature.subscripts()] : null)),
);
)
Text UI
我想使用 RichText 小部件在 flutter 中创建类似这样的 UI。你能帮我写代码吗?我不明白如何设计这样的 UI?
使用WidgetSpan
给出偏移量得到上标。操作如下:
Container(
padding: EdgeInsets.all(10),
child: Center(
child: RichText(
text: TextSpan(children: [
WidgetSpan(
child: Transform.translate(
offset: const Offset(0.0, -7.0), child:
Text("Rs"))),
TextSpan(
text: '1,500',
style: TextStyle(color: Colors.black,
fontSize: 18,fontWeight:FontWeight.bold),
recognizer: TapGestureRecognizer()
..onTap = () {
// navigate to desired screen
})
]),
),
))
或者如果你想在上标文本上使用识别器,那么你应该使用类似的东西:
RichText(
text: TextSpan(
children: [
WidgetSpan(
child: Transform.translate(
offset: Offset(0.0, -7.0),
child: RichText( // use RichText instead ot Text if you need recognizer on a superscripted text
text: TextSpan(
text: "superscripted text",
//style: textStyle,
recognizer: tapGestureRecognizer,
),
)
),
),
],
),
);
重要提示:如果您需要对上标文本进行识别,请在内部块中使用 RichText 而不是 Text。
( 更简单的版本可以在 TextStyle 中使用 fontFeatures,但它没有提升我的解决方法中的文本,所以它对我来说无法正常工作。
TextStyle textStyle = TextStyle(...
fontFeatures: (isSup ? [FontFeature.subscripts()] : (isSub ? [FontFeature.subscripts()] : null)),
);
)