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

Flutter中initState未在Widget构建前执行 无法打印OMDb请求statusCode

问题排查与修复方案

1. 核心错误:initState 拼写错误

Flutter State 生命周期的初始化方法采用驼峰命名规范,你代码中写的initstate(s小写)属于自定义方法,不是系统会自动调用的生命周期方法,所以不会被触发,修改为正确写法即可:

@override
void initState() { // 注意此处S为大写
  super.initState();
  print("pass");
  loaddata();
}

2. 其他需要补全的配置项

  • 代码中使用了http库的get方法,需要先在pubspec.yaml中引入http依赖,同时在代码头部导入包:
    import 'package:http/http.dart' as http;
    
  • Android平台请求网络接口需要在android/app/src/main/AndroidManifest.xml中添加网络权限声明:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • iOS平台需要在ios/Runner/Info.plist中添加域名访问白名单配置,避免ATS策略拦截请求。

3. 修复后完整参考代码

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() {
  print("runned");
  runApp(const MovieApp());
}

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

  @override
  _MovieAppState createState() => _MovieAppState();
}

class _MovieAppState extends State<MovieApp> {
  @override
  void initState() {
    super.initState();
    print("pass");
    loaddata();
  }

  loaddata() async {
    String url = "https://www.omdbapi.com/?s=Batman&page=2&apikey=2c8219b0";
    final movies = await http.get(Uri.parse(url));
    print(movies.statusCode);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('电影列表')),
      ),
    );
  }
}

内容的提问来源于stack exchange,提问作者Saleh Muahammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:06:02