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

Main.dart页面返回Provider时报错 使用Chopper配合Provider出现参数错误

错误原因

你使用的是4.0及以上版本的provider库,该版本对API做了不兼容更新,旧版本中用来初始化实例的builder参数已被完全移除,替换为必填的create参数,你的写法还是适配旧版provider的语法,所以触发了对应报错:

  • 第一个报错是因为新版provider要求必须传入create参数初始化托管实例,你传的builder已经不被识别,因此检测不到必填参数
  • 后两个报错是因为新版provider中builder参数已改为用来构建子组件的可选参数,要求返回Widget类型,你返回的PersonalPostingService和参数要求的类型完全不匹配

另外你当前代码中的main函数缺少runApp调用,就算provider的错误修复后也无法正常挂载应用。

修复后代码

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:relationship/screens/weekly_view.dart';
import 'package:relationship/services/chopper_services.dart';

// 补充runApp调用,将应用挂载到Flutter渲染树
void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  // 补充默认构造方法,符合新版Flutter语法规范
  const MyApp({super.key});

  Widget build(BuildContext context) {
    // 把废弃的builder参数替换为create参数,同时指定Provider的泛型类型
    return Provider<PersonalPostingService>(
        create: (_) => PersonalPostingService.create(),
        dispose: (context, PersonalPostingService service) =>
            service.client.dispose(),
        child: MaterialApp(
          home: WeeklyData(),
        ));
  }
}

可选兼容方案

如果你不想修改代码适配新版provider,可以在pubspec.yaml中将provider的版本锁定为3.2.0,即可匹配你参考的旧教程语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:09:00