Flutter 颤振-SingleChildScrollview不在键盘上滚动弹出窗口
我正在尝试整合一个注册页面。在键盘弹出窗口中,它覆盖了底部的一些输入字段。已经实现了Singlechildscrollview。当键盘弹出时,它不会调整。试过使用resizeToAvoidBottomPadding和其他一些解决方案,但运气不好。请帮忙,谢谢你的帮助Flutter 颤振-SingleChildScrollview不在键盘上滚动弹出窗口,flutter,flutter-layout,flutter-dependencies,flutter-animation,Flutter,Flutter Layout,Flutter Dependencies,Flutter Animation,我正在尝试整合一个注册页面。在键盘弹出窗口中,它覆盖了底部的一些输入字段。已经实现了Singlechildscrollview。当键盘弹出时,它不会调整。试过使用resizeToAvoidBottomPadding和其他一些解决方案,但运气不好。请帮忙,谢谢你的帮助 class _EnterUserDetailsWidgetState extends State<EnterUserDetailsWidget> { @override Widget build(BuildCon
class _EnterUserDetailsWidgetState extends State<EnterUserDetailsWidget> {
@override
Widget build(BuildContext context) {
final String assetName = 'assets/images/app_logo.svg';
final String pageBg = 'assets/images/user_auth_bg.png';
final String app_logo = 'assets/images/fram_collection_logo.png';
final String phoneIcon = 'assets/images/farm.png';
final _nameController = TextEditingController();
final _phoneController = TextEditingController();
final _emailController = TextEditingController();
final _formKey = GlobalKey<FormState>();
final FocusNode _nameFocusNode = FocusNode();
final FocusNode _emailFocusNode = FocusNode();
final FocusNode _phoneNumberNode = FocusNode();
final FocusNode _dummy = FocusNode();
final itemSpacing = 15.0;
return Scaffold(
resizeToAvoidBottomPadding: false,
body: Stack(
children: [
Image(
image: AssetImage(pageBg),
fit: BoxFit.fill,
height: double.infinity,
width: double.infinity,
),
Container(
height: double.maxFinite,
padding: EdgeInsets.all(10),
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 50, bottom: 50),
child: Image(
height: 170,
filterQuality: FilterQuality.high,
image: AssetImage(app_logo),
fit: BoxFit.fitWidth,
),
),
TextFormField(
autofocus: true,
decoration: inputDecorationFeild(
hintText: "Email",
labelText: "Enter Email",
textFeildIcon: FarmCollection.email)),
TextFormField(
autofocus: true,
decoration: inputDecorationFeild(
hintText: "Email",
labelText: "Enter Email",
textFeildIcon: FarmCollection.email)),
TextFormField(
autofocus: true,
decoration: inputDecorationFeild(
hintText: "Email",
labelText: "Enter Email",
textFeildIcon: FarmCollection.email)),
TextFormField(
autofocus: true,
decoration: inputDecorationFeild(
hintText: "Email",
labelText: "Enter Email",
textFeildIcon: FarmCollection.email)),
TextFormField(
autofocus: true,
decoration: inputDecorationFeild(
hintText: "Email",
labelText: "Enter Email",
textFeildIcon: FarmCollection.email)),
curvedButtonGreen(
buttonText: "Submit",
onClick: () async {
await Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => OTPverificationWidget(),
),
);
},
),
],
),
),
),
],
),
);
}
_fieldFocusChange(BuildContext context, FocusNode nextFocus) {
// currentFocus.unfocus();
FocusScope.of(context).requestFocus(nextFocus);
}
}
类_EnterUserDetailsWidgetState扩展状态{
@凌驾
小部件构建(构建上下文){
最终字符串assetName='assets/images/app_logo.svg';
最终字符串pageBg='assets/images/user_auth_bg.png';
最终字符串app_logo='assets/images/fram_collection_logo.png';
最后一个字符串phoneIcon='assets/images/farm.png';
final _nameController=TextEditingController();
final _phoneController=TextEditingController();
final _emailController=TextEditingController();
final _formKey=GlobalKey();
最后一个FocusNode_name FocusNode=FocusNode();
最终焦点节点_emailFocusNode=FocusNode();
最终FocusNode_phoneNumberNode=FocusNode();
最终FocusNode_dummy=FocusNode();
最终项目间距=15.0;
返回脚手架(
resizeToAvoidBottomPadding:false,
主体:堆栈(
儿童:[
形象(
图:资产负债表(pageBg),
fit:BoxFit.fill,
高度:双无限,
宽度:double.infinity,
),
容器(
高度:double.maxFinite,
填充:边缘设置。全部(10),
子:SingleChildScrollView(
物理:AlwaysScrollableScrollPhysics(),
子:列(
crossAxisAlignment:crossAxisAlignment.center,
mainAxisSize:mainAxisSize.min,
儿童:[
填充物(
填充:仅限常量边集(顶部:50,底部:50),
孩子:图像(
身高:170,
filterQuality:filterQuality.high,
图片:AssetImage(app_徽标),
适合:BoxFit.fitWidth,
),
),
TextFormField(
自动对焦:对,
装饰:inputDecorationFeild(
hintText:“电子邮件”,
labelText:“输入电子邮件”,
textfieldicon:FarmCollection.email),
TextFormField(
自动对焦:对,
装饰:inputDecorationFeild(
hintText:“电子邮件”,
labelText:“输入电子邮件”,
textfieldicon:FarmCollection.email),
TextFormField(
自动对焦:对,
装饰:inputDecorationFeild(
hintText:“电子邮件”,
labelText:“输入电子邮件”,
textfieldicon:FarmCollection.email),
TextFormField(
自动对焦:对,
装饰:inputDecorationFeild(
hintText:“电子邮件”,
labelText:“输入电子邮件”,
textfieldicon:FarmCollection.email),
TextFormField(
自动对焦:对,
装饰:inputDecorationFeild(
hintText:“电子邮件”,
labelText:“输入电子邮件”,
textfieldicon:FarmCollection.email),
曲线按钮绿色(
按钮文字:“提交”,
onClick:()异步{
等待导航器。的(上下文)。推送(
材料路线(
生成器:(上下文)=>OTPverificationWidget(),
),
);
},
),
],
),
),
),
],
),
);
}
_fieldFocusChange(构建上下文上下文,FocusNode nextFocus){
//currentFocus.unfocus();
FocusScope.of(上下文).requestFocus(nextFocus);
}
}
我修复并与您共享完整的代码。因为我没有资产文件和某些组件,所以我将其替换为容器或已更改。
主要的变化点是“resizeToAvoidBottomPadding:true”或将其删除
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
final String assetName = 'assets/images/app_logo.svg';
final String pageBg = 'assets/images/user_auth_bg.png';
final String app_logo = 'assets/images/fram_collection_logo.png';
final String phoneIcon = 'assets/images/farm.png';
final _nameController = TextEditingController();
final _phoneController = TextEditingController();
final _emailController = TextEditingController();
final _formKey = GlobalKey<FormState>();
final FocusNode _nameFocusNode = FocusNode();
final FocusNode _emailFocusNode = FocusNode();
final FocusNode _phoneNumberNode = FocusNode();
final FocusNode _dummy = FocusNode();
final itemSpacing = 15.0;
return Scaffold(
resizeToAvoidBottomPadding: true,
body: Stack(
children: [
Container(height: 200),
Container(
height: double.maxFinite,
padding: EdgeInsets.all(10),
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(top: 50, bottom: 50),
child: Container(height: 170),
// child: Image(
// height: 170,
// filterQuality: FilterQuality.high,
// image: AssetImage(app_logo),
// fit: BoxFit.fitWidth,
// ),
),
TextFormField(
autofocus: true,
decoration: InputDecoration(
hintText: "Email",
labelText: "Enter Email",
),
),
TextFormField(
autofocus: true,
decoration: InputDecoration(
hintText: "Email",
labelText: "Enter Email",
),
),
TextFormField(
autofocus: true,
decoration: InputDecoration(
hintText: "Email",
labelText: "Enter Email",
),
),
TextFormField(
autofocus: true,
decoration: InputDecoration(
hintText: "Email",
labelText: "Enter Email",
),
),
TextFormField(
autofocus: true,
decoration: InputDecoration(
hintText: "Email",
labelText: "Enter Email",
),
),
// curvedButtonGreen(
// buttonText: "Submit",
// onClick: () async {
// // await Navigator.of(context).push(
// // MaterialPageRoute(
// // builder: (context) => OTPverificationWidget(),
// // ),
// // );
// },
// ),
],
),
),
),
],
),
);
}
_fieldFocusChange(BuildContext context, FocusNode nextFocus) {
// currentFocus.unfocus();
FocusScope.of(context).requestFocus(nextFocus);
}
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
void initState(){
super.initState();
}
@凌驾
小部件构建(构建上下文){
最终字符串assetName='assets/images/app_logo.svg';
最终字符串pageBg='assets/images/user_auth_bg.png';
最终字符串app_logo='assets/images/fram_collection_logo.png';
最后一个字符串phoneIcon='assets/images/farm.png';
final _nameController=TextEditingController();
final _phoneController=TextEditingController();
final _emailController=TextEditingController();
final _formKey=GlobalKey();
最后一个FocusNode_name FocusNode=FocusNode();
最终焦点节点_emailFocusNode=FocusNode();
最终FocusNode_phoneNumberNode=FocusNode();
最终FocusNode_dummy=FocusNode();
最终项目间距=15.0;
返回脚手架(
resizeToAvoidBottomPadding:true,
主体:堆栈(
儿童:[