我正在尝试将图像放入包含在 DartAlertDialog()
小部件中的长文本中。让我用一些图像来说明问题。
我想要的是:
我有的:
(硬币Image()
在我的文字之后被冲到行中,而我希望它成为它的一部分)。
我目前正在尝试使用Wrap()
小部件,请参阅下面的最小代码
Wrap(children: [
Flexible(
child: Text('Are you sure you want to buy this item for ' +
item.price.toString())),
Padding(
padding: const EdgeInsets.fromLTRB(5, 0, 0, 5),
child: Image.asset(
"path/to/my/image",
width: 30,
)),
Text('?'),
]),
Wrap()
当达到上下文的宽度时,它应该将其子小部件放置在彼此下方。但是,它并没有按我的意愿工作,因为它将小部件放在被包裹的Image
小部件下方,而不是放在最后一个旁边。Text()
Flexible()
我对这个问题的看法是,即使最后一行文本停止得更早,文本行的换行仍然会创建一个“文本框”,它将一直持续到上下文宽度的末尾(即行尾)。这是因为前一行显然已经达到了Wrap()
上下文的宽度。这可能就是为什么作为子列表Image.assets()
中的下一个小部件插入的小部件Wrap()
无论如何都会刷新到下一行。
当然,我尝试了其他几种方法,即使用Row()
小部件并将Text()
小部件包装在Flexible()
小部件中,如下所示:
Row(children: [
const Flexible(
child: Text(
'Are you sure you want to buy this item for ' + item.price.toString(),
)),
Row(children: [
Padding(
padding: const EdgeInsets.fromLTRB(5, 0, 0, 5),
child: Image.asset(
"path/to/my/image",
width: 30,
)),
Text('?'),
]),
这当然不起作用,因为它不是将小Image()
部件放置在包装文本的最后一个单词旁边,而是在整个生成的文本区域旁边。Flexible()
当然,问题在于文本很长,因此分为几行。如果文本没有分成几行,第一种方法会很有效。
有没有办法
- 限制换行的大小,以免换行时被视为整行;
- 插入图像作为文本字符,这样只有使用
Flexible()
do the trick 来解决这个问题; - 自动将行小部件分成几行。
在此先感谢您的时间