打开键盘时Flutter中的溢出错误

我正在设计一个登录页面,当我单击任何文本表单字段时它就会 ,它会打开

并通过这样的溢出警告,请参阅附件。我还希望“加高按钮”图标应位于按钮的右侧。

Widget build(BuildContext context) {

return Container(

child: Scaffold(

body: Stack(

fit: StackFit.expand,

children: <Widget>[

Container(

decoration: BoxDecoration(

image: new DecorationImage(

image: new AssetImage('assets/login_page_bg_1.jpg'),

fit: BoxFit.cover,

colorFilter: new ColorFilter.mode(

Colors.black.withOpacity(0.55), BlendMode.dstATop))),

),

Column(

mainAxisAlignment: MainAxisAlignment.start,

children: <Widget>[

Expanded(

flex: 1,

child: Container(

margin: new EdgeInsets.only(top: 42.0),

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Image.asset('assets/logo.png',

width: 250.0, height: 200.21),

],

),

),

),

Expanded(

flex: 2,

child: Container(

margin: new EdgeInsets.only(bottom: 40.0),

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

//form filed goes here

Text('Login As User',

textAlign: TextAlign.center,

style: TextStyle(

fontWeight: FontWeight.bold, fontSize: 35.0)),

TextFormField(

keyboardType: TextInputType.emailAddress,

decoration: InputDecoration(

hintText: 'you@example.com',

labelText: 'Email Address',

),

new Container(

// width: MediaQuery.of(context).size.width,

child: RaisedButton.icon(

color: Color.fromARGB(251, 188, 74, 1),

label: Text('LOGIN'),

icon: Icon(Icons.send,

size: 10.0, color: Colors.black),

onPressed: () {

this.submit();

}, ),)],),),)],)],),),);

初始状态

错误/溢出状态

回答:

发生这种情况的原因是,当键盘出现在屏幕上时,要绘制的画布的高度减小了。一种解决方案是将您的根容器包装在SingleChildScrollView中,如下所示:

Widget build(BuildContext context) {

return Scaffold(

body: Stack(

fit: StackFit.loose,

children: <Widget>[

Container(

decoration: BoxDecoration(

image: new DecorationImage(

image: new AssetImage('assets/login_page_bg_1.jpg'),

fit: BoxFit.cover,

colorFilter: new ColorFilter.mode(

Colors.black.withOpacity(0.55), BlendMode.dstATop)

)

),

),

Column(

mainAxisAlignment: MainAxisAlignment.start,

children: <Widget>[

SizedBox(height: 42,),

Expanded(

flex: 1,

child: Center(

child:

Image.asset('assets/logo.png',

width: 250.0, height: 200.21),

),

),

Expanded(

flex: 2,

child: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

//form filed goes here

Text('Login As User',

textAlign: TextAlign.center,

style: TextStyle(

fontWeight: FontWeight.bold, fontSize: 35.0)),

TextFormField(

keyboardType: TextInputType.emailAddress,

decoration: InputDecoration(

hintText: 'you@example.com',

labelText: 'Email Address',

)

),

new Container(

// width: MediaQuery.of(context).size.width,

child: RaisedButton.icon(

color: Color.fromARGB(251, 188, 74, 1),

label: Text('LOGIN'),

icon: Icon(Icons.send,

size: 10.0, color: Colors.black),

onPressed: () {

//this.submit();

}, ),)],)),

SizedBox(height: 40,)

],)],),);

当内容的高度大于视口的可用高度时,它将使屏幕可滚动。

以上是 打开键盘时Flutter中的溢出错误 的全部内容, 来源链接: utcz.com/qa/404028.html

回到顶部