[英]How to align widgets left, center, right on single row widget flutter
我需要一些可以将我的小部件在单行小部件中左对齐、居中和右对齐的东西。 现在我已经为我的行小部件使用mainAxisAlignment:MainAxisAlignment.spaceBetween,
。 但是在这里,当我的左侧小部件有一些大内容时, spaceBetween
可以将我的中心小部件对齐到右侧,这会破坏我的应用程序设计。
是否有任何选项可以Align
小部件用于 Row 中的多个小部件?
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(
margin: EdgeInsets.only(left: 15.0),
height: 27.0,
child: Container(
child: Center(
child: Text(
'TestDataTest',
),
),
),
),
Container(
height: 27.0,
child: Container(
child: Center(
child: Text(
'Test',
),
),
),
),
Container(
margin: EdgeInsets.only(right: 15.0),
height: 27.0,
child: Container(
child: Padding(
child: Center(
child: Text(
'T',
),
),
),
),
),
],
);
此处图像将简要描述该问题。 上一行是上述代码,下一行是预期的 output。是否有任何解决方案可以将小部件正确地左对齐、居中和右对齐,不管它们的内容如何?
你可以像这样使用小部件结构
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Container(
alignment: Alignment.center,
margin: EdgeInsets.all(24),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row1(),
Row2(),
],
),
),
),
);
}
}
class Row1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(8),
color: Colors.orange,
height: 48,
child: Row(
children: <Widget>[
Expanded(
child: Align(
alignment: Alignment.centerLeft,
child: Container(
color: Colors.white,
child: Text('TestDataTest'),
),
),
),
Expanded(
child: Align(
alignment: Alignment.center,
child: Container(
color: Colors.white,
child: Text('Test'),
),
),
),
Expanded(
child: Align(
alignment: Alignment.centerRight,
child: Container(
color: Colors.white,
child: Text('T'),
),
),
),
],
),
);
}
}
class Row2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(8),
color: Colors.orange,
height: 48,
child: Row(
children: <Widget>[
Expanded(
child: Align(
alignment: Alignment.centerLeft,
child: Container(
color: Colors.white,
child: Text('LIVE'),
),
),
),
Expanded(
child: Align(
alignment: Alignment.center,
child: Container(
color: Colors.white,
child: Text('LIVE'),
),
),
),
Expanded(
child: Align(
alignment: Alignment.centerRight,
child: Container(
color: Colors.white,
child: Text('\$ 80'),
),
),
),
],
),
);
}
}
一种方法是调整各个容器的宽度。 那可能行得通。 当您提供 MainAxisAlignment.spaceBetween 时,会根据可用空间和小部件数量进行自动调整。
这是我发现的最简单的方法,它非常适合您放入的内容
Container(
margin: EdgeInsets.symmetric(horizontal: 20),
child: Row(
children: [
Text(
'Left'
),
Spacer(),
Text(
'Center'
),
Spacer(),
Text(
'Right'
),
],
),
),
如果您希望左右更靠近边缘,您只需要更改 Container 的边距。
在 Row 小部件内部,一个 Right side 和一个 Center,这是简单的代码。
Row(
children: [
SizedBox(),//use this
Expanded( //center widget expanded
child: Text(
"Add Text",
style: const TextStyle(
color: Colors.white,
fontSize: 18.0,
fontFamily: 'poppins_regular'),
textAlign: TextAlign.center,
),
),
Container(
child: Icon(Icons.delete,color: Colors.white,),
),
],
),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.