Flutter iOS真机重启后仅显示TextField问题求助
问题:iOS真机重启后仅显示TextField,其他组件消失
我用Flutter开发的应用在Android模拟器、Android真机、iOS模拟器上运行正常,但在iOS真机上首次启动正常,重启后只显示TextField,顶部AppBar、底部导航栏、中间的分割线及按钮等组件均消失。
实际显示效果

预期显示效果

main.dart
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:moonlight/screens/sign_in.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Moonlight', theme: ThemeData(fontFamily: 'Prata'), home: SignInScreen(), ); } }
sign_in.dart
import 'package:flutter/material.dart'; import 'package:moonlight/screens/sign_up.dart'; import 'package:moonlight/utils/constants.dart'; import 'package:moonlight/widget/textButton.dart'; import 'package:moonlight/widget/textFiled.dart'; import '../services/dimensions.dart'; class SignInScreen extends StatefulWidget { const SignInScreen({Key? key}) : super(key: key); @override State<SignInScreen> createState() => _SignInScreenState(); } class _SignInScreenState extends State<SignInScreen> { final TextEditingController emailController = new TextEditingController(); final TextEditingController passwordController = new TextEditingController(); @override Widget build(BuildContext context) { return Scaffold( appBar: PreferredSize( preferredSize: Size.fromHeight(Dimensions().getResponsiveSize(170)), child: Container( color: appBarColor, child: AppBar( backgroundColor: appBarColor, toolbarHeight: Dimensions().getResponsiveSize(170), centerTitle: true, title: Column( children: [ Container( //color: Colors.red, width: Dimensions().getResponsiveSize(200), height: Dimensions().getResponsiveSize(40), //width: 200, //color: Colors.red, child: Image.asset( logoUrl, fit: BoxFit.fitHeight, //height: Dimensions().getResponsiveSize(50), //width: Dimensions().getResponsiveSize(200), //width: 50, ), ), SizedBox(height: Dimensions().getResponsiveSize(20),), Text('Sign In', style: TextStyle( fontSize: Dimensions().getResponsiveSize(25), fontWeight: FontWeight.bold ), ), SizedBox(height: Dimensions().getResponsiveSize(5),), Text('Welcome', style: TextStyle( fontSize: Dimensions().getResponsiveSize(15), ), ), ], ), ), )), bottomNavigationBar: GestureDetector( onTap: () { }, child: Container( color: appBarColor, height: Dimensions().getResponsiveSize(50), child: Center( child: Text( 'Go', style: TextStyle(color: Colors.white, fontSize: Dimensions().getResponsiveSize(15), fontWeight: FontWeight.bold ), )), ), ), body: Padding( padding: EdgeInsets.symmetric(horizontal: Dimensions().getResponsiveSize(20)), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ TextFieldInput( controller: emailController, icon: Icons.email, text: 'Email', ), SizedBox( height: Dimensions().getResponsiveSize(10), ), TextFieldInput( controller: passwordController, icon: Icons.lock_rounded, text: 'Password', isObscure: true, ), Row( children: [ Spacer(), TextButtonWidget( onPressed:forgotPassword, text: 'Forgot Password?', size: Dimensions().getResponsiveSize(15), color: appBarColor, ), ], ), SizedBox( height: Dimensions().getResponsiveSize(20), ), Row( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( color: Colors.grey, width: Dimensions().getResponsiveSize(70), height: 1.2, ), SizedBox( width: Dimensions().getResponsiveSize(10), ), Text( 'OR', style: TextStyle(color: Colors.grey, fontSize: Dimensions().getResponsiveSize(15) ), ), SizedBox( width: Dimensions().getResponsiveSize(10), ), Container( color: Colors.grey, width: Dimensions().getResponsiveSize(70), height: 1.2, ), ], ), SizedBox( height: Dimensions().getResponsiveSize(20), ), TextButtonWidget( onPressed: signUpScreen, text: 'Sign Up', size: Dimensions().getResponsiveSize(15), color: appBarColor, ), ], ), ), ); } forgotPassword(){ } signUpScreen(){ Navigator.push( context, MaterialPageRoute(builder: (context) => const SignUpScreen()), ); } }
dimensions.dart
import 'package:get/get.dart'; class Dimensions{ static double shortestSide = Get.size.shortestSide; getResponsiveSize(dynamic size) { dynamic x = (size/392.72727272727275) * 100; return (shortestSide*x)/100; } }
内容的提问来源于stack exchange,提问作者Vimalkumar V
相关产品推荐
相关产品推荐

