Flutter 颤振:如何调整小部件以避免android';s底部导航栏
在myregister屏幕中,手机底部导航栏隐藏了部分内容(位于底部)。内容仅在我关闭底部导航栏时可见 我想要实现的是,每当手机上显示底部导航栏时,我希望将其隐藏的内容向上推,以便于查看;每当导航栏从视线中移开时,我希望内容保持在原来的位置 这是我的密码Flutter 颤振:如何调整小部件以避免android';s底部导航栏,flutter,dart,flutter-layout,safearealayoutguide,Flutter,Dart,Flutter Layout,Safearealayoutguide,在myregister屏幕中,手机底部导航栏隐藏了部分内容(位于底部)。内容仅在我关闭底部导航栏时可见 我想要实现的是,每当手机上显示底部导航栏时,我希望将其隐藏的内容向上推,以便于查看;每当导航栏从视线中移开时,我希望内容保持在原来的位置 这是我的密码 class Body extends StatelessWidget { @override Widget build(BuildContext context) { return SafeArea( child:
class Body extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SafeArea(
child: SizedBox(
width: double.infinity,
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(20)),
child: SingleChildScrollView(
child: Column(
children: [
Text(
"Register Account",
style: headingStyle,
),
Text(
"Complete your details or continue \nwith social media.",
textAlign: TextAlign.center,
),
SizedBox(height: SizeConfig.screenHeight * 0.04), // 4%
SignUpForm(),
SizedBox(height: SizeConfig.screenHeight * 0.03), // 3%
Row(mainAxisAlignment: MainAxisAlignment.center, children: [
SocialCard(
icon: "assets/icons/google-icon.svg",
press: () {},
),
SocialCard(
icon: "assets/icons/facebook-2.svg",
press: () {},
),
SocialCard(
icon: "assets/icons/twitter.svg",
press: () {},
)
]),
SizedBox(height: getProportionateScreenHeight(15)),
Text( <--- HIDDEN FROM VIEW
"By continuing you confirm that you agree with our Term and Condition",
textAlign: TextAlign.center,
),
],
),
),
),
),
);
}
}
// Get Screen Size
class SizeConfig {
static MediaQueryData _mediaQueryData;
static double screenWidth;
static double screenHeight;
static double defaultSize;
static Orientation orientation;
void init(BuildContext context) {
_mediaQueryData = MediaQuery.of(context);
screenWidth = _mediaQueryData.size.width;
screenHeight = _mediaQueryData.size.height;
orientation = _mediaQueryData.orientation;
}
}
// Get the proportionate height as per screen size
double getProportionateScreenHeight(double inputHeight) {
double screenHeight = SizeConfig.screenHeight;
// 812 is the layout height that designer use
return (inputHeight / 812.0) * screenHeight;
}
类主体扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回安全区(
孩子:大小盒子(
宽度:double.infinity,
孩子:填充(
衬垫:
边缘集。对称(水平:GetProtorateTesCreenWidth(20)),
子:SingleChildScrollView(
子:列(
儿童:[
正文(
“注册帐户”,
风格:头型,
),
正文(
“完成您的详细信息或继续使用社交媒体。”,
textAlign:textAlign.center,
),
SizeBox(高度:SizeConfig.screenHeight*0.04),//4%
SignUpForm(),
SizeBox(高度:SizeConfig.screenHeight*0.03),//3%
行(mainAxisAlignment:mainAxisAlignment.center,子项:[
社会信用卡(
图标:“资产/图标/谷歌图标.svg”,
按:(){},
),
社会信用卡(
图标:“资产/图标/facebook-2.svg”,
按:(){},
),
社会信用卡(
图标:“资产/icons/twitter.svg”,
按:(){},
)
]),
SizedBox(高度:GetControlutesCreenheight(15)),
Text(使用SingleChildScrollView
有任何特殊要求吗?如果没有,请尝试下面的代码,如果这对您有效,下面是它的作用
将SigleChildScrollView
替换为Container
将您的SignupForm()
包装在Expanded()小部件中
这是密码-
class Body extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SafeArea(
child: SizedBox(
width: double.infinity,
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(20)),
child: Container(
child: Column(
children: [
Text(
"Register Account",
style: headingStyle,
),
Text(
"Complete your details or continue \nwith social media.",
textAlign: TextAlign.center,
),
SizedBox(height: SizeConfig.screenHeight * 0.04), // 4%
Expanded(child: SignUpForm()),
SizedBox(height: SizeConfig.screenHeight * 0.03), // 3%
Row(mainAxisAlignment: MainAxisAlignment.center, children: [
SocialCard(
icon: "assets/icons/google-icon.svg",
press: () {},
),
SocialCard(
icon: "assets/icons/facebook-2.svg",
press: () {},
),
SocialCard(
icon: "assets/icons/twitter.svg",
press: () {},
)
]),
SizedBox(height: getProportionateScreenHeight(15)),
Text(
"By continuing you confirm that you agree with our Term and Condition",
textAlign: TextAlign.center,
),
],
),
),
),
),
);
}
}
// Get Screen Size
class SizeConfig {
static MediaQueryData _mediaQueryData;
static double screenWidth;
static double screenHeight;
static double defaultSize;
static Orientation orientation;
void init(BuildContext context) {
_mediaQueryData = MediaQuery.of(context);
screenWidth = _mediaQueryData.size.width;
screenHeight = _mediaQueryData.size.height;
orientation = _mediaQueryData.orientation;
}
}
// Get the proportionate height as per screen size
double getProportionateScreenHeight(double inputHeight) {
double screenHeight = SizeConfig.screenHeight;
// 812 is the layout height that designer use
return (inputHeight / 812.0) * screenHeight;
}
使用SafeArea小部件避免底部导航栏。了解更多有关SafeArea小部件的信息
单击在大小框上添加高度,如下所示
class Body extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SafeArea(
child: SizedBox(
width: double.infinity,
height: MediaQuery.of(context).size.height. // Add this line
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(20)),
child: SingleChildScrollView(
child: Column(
children: [
Text(
"Register Account",
style: headingStyle,
),
Text(
"Complete your details or continue \nwith social media.",
textAlign: TextAlign.center,
),
SizedBox(height: SizeConfig.screenHeight * 0.04), // 4%
SignUpForm(),
SizedBox(height: SizeConfig.screenHeight * 0.03), // 3%
Row(mainAxisAlignment: MainAxisAlignment.center, children: [
SocialCard(
icon: "assets/icons/google-icon.svg",
press: () {},
),
SocialCard(
icon: "assets/icons/facebook-2.svg",
press: () {},
),
SocialCard(
icon: "assets/icons/twitter.svg",
press: () {},
)
]),
SizedBox(height: getProportionateScreenHeight(15)),
Text( <--- HIDDEN FROM VIEW
"By continuing you confirm that you agree with our Term and Condition",
textAlign: TextAlign.center,
),
],
),
),
),
),
);
}
}
类主体扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回安全区(
孩子:大小盒子(
宽度:double.infinity,
高度:MediaQuery.of(context).size.height//添加此行
孩子:填充(
衬垫:
边缘集。对称(水平:GetProtorateTesCreenWidth(20)),
子:SingleChildScrollView(
子:列(
儿童:[
正文(
“注册帐户”,
风格:头型,
),
正文(
“完成您的详细信息或继续使用社交媒体。”,
textAlign:textAlign.center,
),
SizeBox(高度:SizeConfig.screenHeight*0.04),//4%
SignUpForm(),
SizeBox(高度:SizeConfig.screenHeight*0.03),//3%
行(mainAxisAlignment:mainAxisAlignment.center,子项:[
社会信用卡(
图标:“资产/图标/谷歌图标.svg”,
按:(){},
),
社会信用卡(
图标:“资产/图标/facebook-2.svg”,
按:(){},
),
社会信用卡(
图标:“资产/icons/twitter.svg”,
按:(){},
)
]),
SizedBox(高度:GetControlutesCreenheight(15)),
正文(这解决了部分问题,而不是全部问题。当我使用键盘时,像素溢出问题只能通过使用saySingleChildScrollView
使小部件可滚动来解决。你如何解决这个问题?你能在使用键盘时添加一些溢出问题的屏幕截图吗?如果你检查我的代码,y。)你会发现我已经有了SafeArea
sry,我没有看到