我正在尝试从下面的小部件中获取文本(卡路里)。
return Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Flexible(
child: AutoSizeText.rich(
TextSpan(
children: <TextSpan>[
TextSpan(
text: NumberFormat.decimalPattern(locale).format(
calories!.round(),
),
),
// reduce spacing between amount and unit as defined in design
TextSpan(text: ' ', style: TextStyle(letterSpacing: -5.0)),
TextSpan(
text: _translate(AppLocalization.Caloriesunitkcal),
style: Theme.of(context)
.textTheme
.bodyText1!
.copyWith(color: caloriesTextColor),
)
],
),
maxLines: 1,
minFontSize: AdTheme.smallestUsedTextSize,
group: _group1,
style: Theme.of(context)
.textTheme
.headline3!
.copyWith(color: caloriesTextColor),
),
),
],
),
AutoSizeText(
description!,
maxLines: 1,
textAlign: TextAlign.center,
minFontSize: AdTheme.smallestUsedTextSize,
group: _group2,
style: Theme.of(context).textTheme.bodyText1,
)
],
);
}
我试图获取 textspan 的解决方案如下:
var firstCell = find
.descendant(
of: find.byType(Flexible),
matching: find.byType(TextSpan),
)
.evaluate()
.whereType<Text>()
.first;
print(firstCell.data);
但是这个解决方案不允许我在这个文本跨度中获取文本。
如果有人对此有一些见解并使用过类似的数据,请提供帮助。