Flutter 在发布模式下停留在启动画面,在调试模式下工作正常

时间:2021-07-15 21:44:37

标签: flutter dart

我制作了自己的启动画面,其中有一个名为 _navigate 的函数,它决定用户应导航到下一个主屏幕或身份验证屏幕的位置。

问题是它在调试模式下工作正常,导航根据指定的条件正确进行,但在发布模式下它卡住了,根本不导航。

代码如下:

class _SplashScreenState extends State<SplashScreen> {
  bool _firstTime = true;

  Future<void> _navigate(BuildContext context) async {
    bool _isLoggedIn = await Provider.of<Info>(context, listen: false).token();

    if (_isLoggedIn) {
      final _prefs = await SharedPreferences.getInstance();

      User _user = User(
        id: _prefs.getString("id"),
        name: _prefs.getString("name"),
        phoneNumber: _prefs.getInt("phoneNumber"),
      );

      Provider.of<Info>(context, listen: false).setUser(user: _user);
      Navigator.of(context).pushReplacementNamed(HomeScreen.routeName);
    } else {
      Navigator.of(context).pushReplacementNamed(AuthScreen.routeName);
    }
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    if (_firstTime) {
      _navigate(context);
      _firstTime = false;
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.lightGreen,
      body: Center(
        child: Container(
          padding: EdgeInsets.all(25),
          decoration: BoxDecoration(
            shape: BoxShape.circle,
            color: Colors.white,
            border: Border.all(
              color: Colors.lightGreen,
            ),
          ),
          clipBehavior: Clip.hardEdge,
          child: Image(
            height: 200,
            width: 200,
            image: AssetImage("assets/images/freelance.png"),
          ),
        ),
      ),
    );
  }
}

这里是 token 函数:

Future<bool> token() async {
    final _prefs = await SharedPreferences.getInstance();
    _token = _prefs.getString("token");
    return _token != null;
  }

setUser 函数:

void setUser({
    @required User user,
  }) {
    _user = user;
  }

0 个答案:

没有答案