简体   繁体   English

LateInitializationError:即使使用 initState(),字段“animationController”也未初始化

[英]LateInitializationError: Field 'animationController' has not been initialized even using initState()

I am trying to build a login/signup page by using SingleTickerProviderStateMixin but I am getting errors on AnimationController.我正在尝试使用 SingleTickerProviderStateMixin 构建登录/注册页面,但在 AnimationController 上出现错误。 How I can solve it, Even try to use nullable?我该如何解决它,甚至尝试使用可为空的? but I have to check.但我必须检查。 on operation.在操作上。 At that time I also get errors.那时我也得到错误。 Please help me to find out any solutions请帮我找出任何解决方案

class log2 extends StatefulWidget {
  const log2({Key? key}) : super(key: key);

  @override
  State<log2> createState() => _log2State();
}

class _log2State extends State<log2> with SingleTickerProviderStateMixin {
  bool islogin = true;
  Animation<double>? containSize;
  late AnimationController animationController;
  Duration duration = Duration(milliseconds: 270);

  @override
  Widget build(BuildContext context) {
    double mobHeight = MediaQuery.of(context).size.height;
    double mobWidth = MediaQuery.of(context).size.width;
    TextEditingController emailController = TextEditingController(),
        passController = TextEditingController();

    initState() {
      super.initState();
      animationController =
          AnimationController(vsync: this, duration: duration);
      SystemChrome.setEnabledSystemUIOverlays([]);
    }

    //For Ticker Screen
    containSize = Tween<double>(begin: mobHeight * 0.1, end: mobWidth * 0.1)
        .animate(
            CurvedAnimation(parent: animationController, curve: Curves.linear));

    @override
    void dispose() {
      animationController.dispose();
      super.dispose();
    }

Build Widget:构建小部件:

return SafeArea(
      child: Scaffold(
        body: Stack(
          children: [
            Padding(
              padding: const EdgeInsets.only(top: 50),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  Text(
                    "Welcome",
                    style: TextStyle(color: Colors.black, fontSize: 25),
                  ),
                  SizedBox(
                    height: 40,
                  ),
                  Transform.rotate(
                    angle: pi / 4,
                    child: Image.asset(
                      "images/computerdesk.png",
                      fit: BoxFit.cover,
                      height: mobHeight / 3,
                      width: mobWidth / 0.2,
                    ),
                  ),

                  AnimatedBuilder(
                    animation: animationController,
                    builder: (context, child) {
                      return buiderSignupContainer();
                    },
                  ),
                ],
              ),
            ),
            Positioned(
              child: Image.asset("images/ball.png"),
            ),
          ],
        ),
      ),
    );
  }

2nd stack widget:第二个堆栈小部件:

Widget buiderSignupContainer() {
    double mobheight = MediaQuery.of(context).size.height;
    return Align(
      alignment: Alignment.bottomCenter,
      child: GestureDetector(
        child: Container(
          width: double.infinity,
          height: containSize?.value,
          decoration: BoxDecoration(
            borderRadius: BorderRadius.only(
              topRight: Radius.circular(30),
              topLeft: Radius.circular(30),
            ),
            color: Colors.black.withAlpha(50),
          ),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text("Don't Have a Account Yet?"),
              VerticalDivider(width: 5),
              Text(
                "Sign Up",
                style: TextStyle(color: Colors.red),
              ),
            ],
          ),
        ),
        onTap: () {
          setState(() {
            islogin = !islogin;
          });
        },
      ),
    );
  }

You put initState and dispose methods to wrong block.您将 initState 和 dispose 方法放入错误的块中。 Change it to:将其更改为:

class _log2State extends State<log2> with SingleTickerProviderStateMixin {   bool islogin = true;   Animation<double>? containSize;   late AnimationController animationController;   Duration duration = Duration(milliseconds: 270);

  bool islogin = true;
  Animation<double>? containSize;
  late AnimationController animationController;
  Duration duration = Duration(milliseconds: 270);

  @override
  void initState() {
     super.initState();
     animationController = AnimationController(vsync: this, duration: duration);
     SystemChrome.setEnabledSystemUIOverlays([]);
     //For Ticker Screen
     containSize = Tween<double>(begin: mobHeight * 0.1, end: mobWidth * 0.1).animate(CurvedAnimation(parent: animationController, curve: Curves.linear));
  }

  @override
  void dispose() {
     animationController.dispose();
     super.dispose();
  }

  @override 
  Widget build(BuildContext context) {
    double mobHeight = MediaQuery.of(context).size.height;
    double mobWidth = MediaQuery.of(context).size.width;
    TextEditingController emailController = TextEditingController() passController = TextEditingController();

    return SafeArea(
  child: Scaffold(
    body: Stack(
      children: [
        Padding(
          padding: const EdgeInsets.only(top: 50),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Text(
                "Welcome",
                style: TextStyle(color: Colors.black, fontSize: 25),
              ),
              SizedBox(
                height: 40,
              ),
              Transform.rotate(
                angle: pi / 4,
                child: Image.asset(
                  "images/computerdesk.png",
                  fit: BoxFit.cover,
                  height: mobHeight / 3,
                  width: mobWidth / 0.2,
                ),
              ),

              AnimatedBuilder(
                animation: animationController,
                builder: (context, child) {
                  return buiderSignupContainer();
                },
              ),
            ],
          ),
        ),
        Positioned(
          child: Image.asset("images/ball.png"),
        ),
      ],
    ),
  ),
);
}

   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 LateInitializationError:字段“mangaStatus”尚未在 flutter 中初始化 - LateInitializationError: Field 'mangaStatus' has not been initialized in flutter LateInitializationError:Flutter中的字段尚未初始化 - LateInitializationError: Field has not been initialized in Flutter flutter 错误 LateInitializationError:字段“@”尚未初始化 - flutter error LateInitializationError: Field '@' has not been initialized LateInitializationError:字段“chatRoomsStream”尚未在 Flutter 中初始化 - LateInitializationError: Field 'chatRoomsStream' has not been initialized in Flutter 未处理的异常:LateInitializationError:字段“_id@21016470”尚未初始化 - Unhandled Exception: LateInitializationError: Field '_id@21016470' has not been initialized LateInitializationError:字段“_preferences@56516396”尚未初始化 - LateInitializationError: Field '_preferences@56516396' has not been initialized flutter 错误 LateInitializationError: Field '_instance@21075166' has not been initialized - flutter error LateInitializationError: Field '_instance@21075166' has not been initialized 发生异常。 LateError(LateInitializationError:字段“注释”尚未初始化。) - Exception has occurred. LateError (LateInitializationError: Field 'notes' has not been initialized.) Dart 错误 - 发生异常。 LateError(LateInitializationError:字段“结果”尚未初始化。) - Dart Error - Exception has occurred. LateError (LateInitializationError: Field 'results' has not been initialized.) Flutter 通知:LateError(LateInitializationError:字段 '_local@359310200' 尚未初始化。) - Flutter Notifications: LateError (LateInitializationError: Field '_local@359310200' has not been initialized.)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM