Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 发生异常。错误(在dispose()之后调用setState():_MyProfileState#c3ad1(生命周期状态:已失效,未装入)_Flutter_Asynchronous_Dispose - Fatal编程技术网

Flutter 发生异常。错误(在dispose()之后调用setState():_MyProfileState#c3ad1(生命周期状态:已失效,未装入)

Flutter 发生异常。错误(在dispose()之后调用setState():_MyProfileState#c3ad1(生命周期状态:已失效,未装入),flutter,asynchronous,dispose,Flutter,Asynchronous,Dispose,当我从配置文件页面单击通知导航项到通知时显示此错误 发生异常。错误(在之后调用setState() dispose() 如果对状态对象调用setState(),则会发生此错误 对于不再出现在小部件树中的小部件(例如 父窗口小部件不再在其构建中包含该窗口小部件)。此错误 当代码从计时器或动画调用setState()时可能会发生 回调。首选的解决方案是取消计时器或停止 在dispose()回调中侦听动画。另一种解决方案 是在调用之前检查此对象的“mounted”属性 setState()以确保对象仍

当我从配置文件页面单击通知导航项到通知时显示此错误

发生异常。错误(在之后调用setState() dispose() 如果对状态对象调用setState(),则会发生此错误 对于不再出现在小部件树中的小部件(例如 父窗口小部件不再在其构建中包含该窗口小部件)。此错误 当代码从计时器或动画调用setState()时可能会发生 回调。首选的解决方案是取消计时器或停止 在dispose()回调中侦听动画。另一种解决方案 是在调用之前检查此对象的“mounted”属性 setState()以确保对象仍在树中。此错误可能 如果由于另一个原因调用setState(),则指示内存泄漏 对象被删除后仍保留对此状态对象的引用 为了避免内存泄漏,考虑中断 在dispose()期间对此对象的引用。)

个人资料页:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:play_big_win/constants.dart';
import 'package:play_big_win/services/firebase-auth-helper.dart';

class MyProfile extends StatefulWidget {
  @override
  _MyProfileState createState() => _MyProfileState();
}

class _MyProfileState extends State<MyProfile> {
  final firebaseUser = FirebaseAuth.instance.currentUser;
  final db = FirebaseFirestore.instance;
  String fullname = '';
  String email = '';
  @override
  void dispose() {
    SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
    super.dispose();
  }

  @override
  initState() {
    SystemChrome.setEnabledSystemUIOverlays([]);
    super.initState();
  }

  getData() async {
    while (mounted) {
      dynamic names = await FirebaseAuthHelper().getCurrentUserData();
      if (names != null) {
        fullname = names[0];
        email = names[1];
        setState(() {});
      } else {
        print("Nulllll");
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    getData();
    return Scaffold(
      backgroundColor: kPrimaryColor,
      body: SafeArea(
        child: ListView(
          shrinkWrap: true,
          children: [
            SizedBox(
              height: 20,
            ),
            Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Container(
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.all(
                      Radius.circular(15),
                    ),
                  ),
                  width: MediaQuery.of(context).size.width - 25,
                  height: 150,
                  child: Row(
                    children: [
                      CircleAvatar(
                        radius: 60.0,
                        backgroundImage: NetworkImage(
                          'https://res.cloudinary.com/dqunmzmqo/image/upload/v1606248032/male-clipart-avatar_ewaerc.png',
                        ),
                      ),
                      Padding(
                        padding: const EdgeInsets.only(top: 45.0),
                        child: Column(
                          children: [
                            Text(
                              "Name: $fullname",
                              style: TextStyle(
                                fontSize: 14,
                              ),
                            ),
                            SizedBox(
                              height: 10,
                            ),
                            Text(
                              "Email: $email",
                              style: TextStyle(
                                fontSize: 14,
                              ),
                            ),
                            SizedBox(
                              height: 10,
                            ),
                            Text(
                              "Refer Code: Xasdsas",
                              style: TextStyle(
                                fontSize: 14,
                              ),
                            )
                          ],
                        ),
                      ),
                    ],
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.only(top: 8.0),
                  child: Text(
                    'Play Big Win Big',
                    style: TextStyle(
                      fontFamily: 'Pacifico',
                      fontSize: 20.0,
                      color: Colors.white,
                    ),
                  ),
                ),
                SizedBox(
                  height: 5,
                ),
                Text(
                  'V1.0',
                  style: TextStyle(
                    fontSize: 10.0,
                    letterSpacing: 2.5,
                    color: Colors.teal.shade100,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                SizedBox(
                  height: 20.0,
                  width: 150.0,
                  child: Divider(
                    color: Colors.teal.shade100,
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    // Navigator.push(

                    //     context,

                    //     MaterialPageRoute(

                    //       builder: (context) => MyprivacyPolicy(),

                    //     ));
                  },
                  child: Card(
                    color: Colors.white,
                    margin:
                        EdgeInsets.symmetric(vertical: 10.0, horizontal: 25.0),
                    child: ListTile(
                      leading: Icon(
                        Icons.group_add,
                        color: Colors.teal,
                      ),
                      title: Text(
                        'Invite Friends',
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 17.0,
                          color: Colors.teal.shade900,
                        ),
                      ),
                    ),
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    // Navigator.push(

                    //     context,

                    //     MaterialPageRoute(

                    //       builder: (context) => MyprivacyPolicy(),

                    //     ));
                  },
                  child: Card(
                    color: Colors.white,
                    margin:
                        EdgeInsets.symmetric(vertical: 10.0, horizontal: 25.0),
                    child: ListTile(
                      leading: Icon(
                        Icons.question_answer,
                        color: Colors.teal,
                      ),
                      title: Text(
                        "FAQ's",
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 17.0,
                          color: Colors.teal.shade900,
                        ),
                      ),
                    ),
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    // Navigator.push(

                    //     context,

                    //     MaterialPageRoute(

                    //       builder: (context) => MyprivacyPolicy(),

                    //     ));
                  },
                  child: Card(
                    color: Colors.white,
                    margin:
                        EdgeInsets.symmetric(vertical: 10.0, horizontal: 25.0),
                    child: ListTile(
                      leading: Icon(
                        Icons.privacy_tip,
                        color: Colors.teal,
                      ),
                      title: Text(
                        'Privacy Policy',
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 17.0,
                          color: Colors.teal.shade900,
                        ),
                      ),
                    ),
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    // Navigator.push(

                    //     context,

                    //     MaterialPageRoute(

                    //       builder: (context) => TermsandCondtions(),

                    //     ));
                  },
                  child: Card(
                    color: Colors.white,
                    margin:
                        EdgeInsets.symmetric(vertical: 10.0, horizontal: 25.0),
                    child: ListTile(
                      leading: Icon(
                        Icons.auto_fix_normal,
                        color: Colors.teal,
                      ),
                      title: Text(
                        'Terms & Conditions',
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          fontSize: 17.0,
                          color: Colors.teal.shade900,
                        ),
                      ),
                    ),
                  ),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}
我在配置文件页面中调用的以下代码:

 getData() async {
    while (mounted) {
      dynamic names = await FirebaseAuthHelper().getCurrentUserData();
      if (names != null) {
        fullname = names[0];
        email = names[1];
        setState(() {});
      } else {
        print("Null");
      }
    }
  }

您正在异步函数中使用setState,等待之后,您的小部件可能不会再被装载。执行setState时会出现异常。请使用以下代码或将其放置在任何其他位置

if (this.mounted) {
setState(() {
 });
 }
或更清晰的方法覆盖设置状态

@override
  void setState(fn) {
    if(mounted) {
      super.setState(fn);
    }
  }
if (this.mounted) {
setState(() {
 });
 }
@override
  void setState(fn) {
    if(mounted) {
      super.setState(fn);
    }
  }