You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:36:18