Text 文本字段中的文本垂直居中对齐颤振
我尝试在大量资源中查找,但不幸的是,我找不到一种方法来对齐文本字段中的文本垂直中心。我也试着用suffixIcon来代替后缀,但还是不走运。这是我的密码:Text 文本字段中的文本垂直居中对齐颤振,text,flutter,textfield,vertical-alignment,Text,Flutter,Textfield,Vertical Alignment,我尝试在大量资源中查找,但不幸的是,我找不到一种方法来对齐文本字段中的文本垂直中心。我也试着用suffixIcon来代替后缀,但还是不走运。这是我的密码: import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { re
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _HomePageState();
}
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: Icon(
Icons.menu,
color: Colors.black,
),
backgroundColor: Colors.white,
title: Container(
margin: EdgeInsets.only(bottom: 10),
child: Image.asset(
"icons/logo.png",
),
),
bottom: PreferredSize(
child: Padding(
padding: EdgeInsets.only(
left: 10,
right: 10,
bottom: 10,
),
child: Container(
height: 40,
child: TextField(
textAlignVertical: TextAlignVertical.center,
textAlign: TextAlign.left,
maxLines: 1,
style: TextStyle(
fontSize: 13,
),
decoration: InputDecoration(
suffixIcon: IconButton(icon: Icon(Icons.search, color: Colors.black,), onPressed: (){}),
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.black,
),
borderRadius: BorderRadius.all(Radius.circular(15)),
)
),
),
),
),
preferredSize: Size(MediaQuery.of(context).size.width, 50),
),
),
body: Container(
margin: EdgeInsets.only(top: 11),
child: Column(
children: <Widget>[
Carousel(),
],
),
),
);
}
}
class Carousel extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _CarouselState();
}
}
class _CarouselState extends State<Carousel> {
List<String> urls = [];
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Stack(
children: <Widget>[
Image.network(
"someImageUrlHere."),
Positioned(
bottom: 5,
width: MediaQuery.of(context).size.width - 20,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text("•"),
Text("•"),
Text("•"),
Text("•"),
Text("•"),
],
),
),
],
),
);
}
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:主页(),
);
}
}
类主页扩展了StatefulWidget{
@凌驾
状态createState(){
返回_HomePageState();
}
}
类_HomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
领先:图标(
图标菜单,
颜色:颜色,黑色,
),
背景颜色:Colors.white,
标题:集装箱(
页边距:仅限边集(底部:10),
子:Image.asset(
“icons/logo.png”,
),
),
底部:首选尺寸(
孩子:填充(
填充:仅限边缘设置(
左:10,,
右:10,,
底部:10,
),
子:容器(
身高:40,
孩子:TextField(
textAlignVertical:textAlignVertical.center,
textAlign:textAlign.left,
maxLines:1,
样式:TextStyle(
尺寸:13,
),
装饰:输入装饰(
后缀:图标按钮(图标:图标(Icons.search,颜色:Colors.black,),ON按下:(){}),
边框:大纲输入边框(
边界边(
颜色:颜色,黑色,
),
borderRadius:borderRadius.all(半径.圆形(15)),
)
),
),
),
),
preferredSize:Size(MediaQuery.of(context).Size.width,50),
),
),
主体:容器(
页边距:仅限边缘集(顶部:11),
子:列(
儿童:[
转盘(),
],
),
),
);
}
}
类Carousel扩展StatefulWidget{
@凌驾
状态createState(){
返回_CarouselState();
}
}
类_CarouselState扩展状态{
列出URL=[];
@凌驾
小部件构建(构建上下文){
返回填充(
填充:边缘组。对称(水平:10),
子:堆栈(
儿童:[
图像网络(
“这里有一些图像。”),
定位(
底部:5,
宽度:MediaQuery.of(context).size.width-20,
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
文本(“•”),
文本(“•”),
文本(“•”),
文本(“•”),
文本(“•”),
],
),
),
],
),
);
}
}
是什么问题导致了这个问题?如何解决此问题?请尝试按列换行,并将“mainAxisAlignment”属性添加到“mainAxisAlignment.center”中
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start, // If you want align text to left
children: <Widget>[
TextField(
textAlignVertical: TextAlignVertical.center,
textAlign: TextAlign.left,
maxLines: 1,
style: TextStyle(
fontSize: 13,
),
decoration: InputDecoration(
suffixIcon: IconButton(icon: Icon(Icons.search, color: Colors.black,), onPressed: (){}),
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.black,
),
borderRadius: BorderRadius.all(Radius.circular(15)),
)
),
),
],
),
)
容器(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.start,//如果要将文本向左对齐
儿童:[
文本字段(
textAlignVertical:textAlignVertical.center,
textAlign:textAlign.left,
maxLines:1,
样式:TextStyle(
尺寸:13,
),
装饰:输入装饰(
后缀:图标按钮(图标:图标(Icons.search,颜色:Colors.black,),ON按下:(){}),
边框:大纲输入边框(
边界边(
颜色:颜色,黑色,
),
borderRadius:borderRadius.all(半径.圆形(15)),
)
),
),
],
),
)
我有单行文本字段的解决方案。将TextField放置在一个具有height属性的容器中(在我的例子中,也是width),然后在装饰内部提供一个contentPadding值,该值为height/2
代码如下:
Container(
height: textfieldDimension,
width: textfieldDimension,
alignment: Alignment.center,
child: TextField(
decoration: InputDecoration(
border: InputBorder.none,
contentPadding: EdgeInsets.only(
bottom: textfieldDimension / 2, // HERE THE IMPORTANT PART
)
),
// textAlignVertical: TextAlignVertical.center, THIS DOES NOT WORK
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 10, // This is not so important
),
),
),
日期时间很完美,但提示对齐和日期值不在同一位置对齐
容器(
孩子:填充(
填充:仅限常量边设置(
左:15.0,右:15.0,顶部:15.0,底部:10.0),
孩子:排(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
居中(
子:Image.asset(
“assets/images/date.png”,
//宽度:20,
宽度:SizeConfig.safeBlockHorizontal*4,
),
),
大小盒子(
宽度:15,
),
灵活的(
儿童:中心(
孩子:DateTimeField(
装饰:输入装饰(
hintText:“开始日期和时间”,
hintStyle:TextStyle(
//尺寸:14,
fontSize:SizeConfig.safeBlockHorizontal*3,
),
边框:InputBorder.none,
),
验证人:validateStartDate,
TextField(
decoration: InputDecoration(
contentPadding: EdgeInsets.zero,
hintText: "password",
),
)
TextField(
textAlign: TextAlign.center,
decoration: InputDecoration(
hintText: "Centered Hint",
),
)