flutter - 如何根据条件将小部件向右或向左对齐
问题描述
我正在构建一个聊天小部件,并希望机器人响应位于左侧,用户响应位于右侧。
但是,尽管我正确识别了用户类型,但两个响应都是从左侧开始的
如何修改代码,使 BOT 消息位于左侧,用户消息位于右侧
List<Widget> botMessage(context) {
return <Widget>[
Padding(
padding: const EdgeInsets.only(left: 10.0, top: 10.0, bottom: 10.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
CircleAvatar(
backgroundImage: AssetImage('assets/images/rce_icon.jpg'),
radius: 10.0,
),
SizedBox(
width: 8.0,
),
Container(
constraints: BoxConstraints(
maxWidth: MediaQuery.of(context).size.width * 0.7,
),
padding:
const EdgeInsets.symmetric(vertical: 5.0, horizontal: 5.0),
child: Padding(
padding: const EdgeInsets.only(left: 10.0, right: 10.0),
child: Text(
replies,
),
),
)
],
),
),
];
}
//should be align right
List<Widget> userMessage(context) {
return <Widget>[
Padding(
padding: const EdgeInsets.only(top: 10, bottom: 10.0, right: 25.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
constraints: BoxConstraints(
maxWidth: MediaQuery.of(context).size.width * 0.7,
),
padding:
const EdgeInsets.symmetric(vertical: 12.0, horizontal: 16.0),
child: Text(
replies,
),
)
],
),
)
];
}
@override
Widget build(BuildContext context) {
return Container(
margin: const EdgeInsets.symmetric(vertical: 10.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: this.type ? botMessage(context) : userMessage(context),
),
);
}
}
解决方案
Add mainAxisAlignment
, 里面的Row
WidgetmainAxisAlignment
用于对齐
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment:
this.type ? MainAxisAlignment.start : MainAxisAlignment.end,
children: this.type ? botMessage(context) : userMessage(context),
),
推荐阅读
- c - C 和 Go 之间的抽象 Unix 套接字
- nginx - Kubernetes NGINX 入口重写目标注释中断
- woocommerce - woocommerce 使用 REST API 删除所有变体
- python - 熊猫函数 to_numpy
- r - 如何从 Rust 过程宏生成文件?
- python - Python 2.7 继承 - 我可以在不更改子代码的情况下包装被覆盖的方法吗?
- javascript - HTML Canvas 颜色特定区域
- angular - 具有嵌套子级的 Angular ViewChildren
- python - 如何使用熊猫读取这样的csv?
- php - 如何在 php 页面中显示 XML 外部实体?