下面的代码运行良好,并在FlatButton下面显示了TextField:
import 'package:flutter/material.dart';
class LocationCapture extends StatelessWidget {
LocationCapture(this.clickCallback, this.tc);
final TextEditingController tc;
final VoidCallback clickCallback;
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
// Row(
// children: <Widget>[
TextField(controller: tc,),
FlatButton(
child: const Icon(Icons.my_location),
onPressed: () => clickCallback(),
)
// ])
]);
}
}
我试着添加Row
,使他们在单行,但它不工作,并显示空白的屏幕!!
**更新**
通过将每个元素包装到一个容器中,我能够将它们排列在一起,但仍然不满意,因为它要求我分配容器的宽度,我需要自动完成这个任务:
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
width: 180,
child: TextField(
controller: tc,
enabled: false,
textAlign: TextAlign.center,
decoration: InputDecoration.collapsed(hintText: "")
)
),
Container(
child: FlatButton(
child: const Icon(Icons.my_location),
onPressed: () => clickCallback(),
)
),
]
);
发布于 2018-12-22 04:41:14
这就是你能做到的。
textDirection属性的Row()小部件将允许您从上述方向开始子小部件的定位。
注意:- **如果您在项目中使用textDirection()小部件,您可以删除或注释掉‘MaterialApp’。它负责textDirection。
展开()小部件用于占用剩余的整个空间。
child: Row(
textDirection: TextDirection.rtl,
children: <Widget>[
FlatButton(onPressed: () {}, child: Text("Demo Button")),
Expanded(child: TextFormField())
],
)
https://stackoverflow.com/questions/53894607
复制