Flutter页面加载时initState未调用问题求助
问题原因及解决方法
你的代码核心问题是生命周期方法命名错误:你定义的是initstate()(小写s),但Flutter标准的初始化生命周期方法是initState()(大写S)。
Flutter框架只会自动识别并调用符合规范命名的生命周期方法,小写s的initstate只是一个普通自定义方法,不会在Widget初始化阶段被触发——这就是为什么你看不到它的打印输出,但build方法能正常执行的原因。
修正后的代码如下:
import 'package:flutter/material.dart'; class MapPagePermissions extends StatefulWidget { const MapPagePermissions({Key? key}) : super(key: key); @override _MapPagePermissionsState createState() => _MapPagePermissionsState(); } class _MapPagePermissionsState extends State<MapPagePermissions> { @override void initState(){ // 将小写s改为大写S super.initState(); print('Innit State'); } @override Widget build(BuildContext context) { print('Build Function'); // Prints return const Scaffold( body: Center( child: Text( 'MAP PAGE', style: TextStyle(fontSize: 30), ), ), ); } }
修正后,通过Navigator.push跳转至该页面时,initState会正常被调用,你也能看到对应的打印内容了。
内容的提问来源于stack exchange,提问作者JohnnyQ
相关产品推荐
相关产品推荐

