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

如何在Dart中为必填字段创建测试用部分模型

解决Dart必填字段模型生成部分修改假数据的问题

你现在的核心问题是,原有OrganisationModel的字段都是必填项,导致生成partial实例时必须传入所有字段(哪怕是空字符串),而空值会覆盖fake函数里的默认假数据。要实现只传需要修改的参数、其余保留默认值,且不改动原模型,可以用以下两种方案:

方案一:创建可选字段的Partial类

新建一个仅用于传递部分修改参数的类,所有字段设为可选类型:

class PartialOrganisation {
  final String? id;
  final String? name;
  final String? numberOfEmployee;
  final String? activitySector;

  PartialOrganisation({
    this.id,
    this.name,
    this.numberOfEmployee,
    this.activitySector,
  });
}

然后修改fakeOrganisation函数,接收这个Partial类的实例:

OrganisationModel fakeOrganisation({PartialOrganisation? partial}) {
  return OrganisationModel(
    id: partial?.id ?? '1234',
    name: partial?.name ?? 'MyCompany',
    numberOfEmployee: partial?.numberOfEmployee ?? '68',
    activitySector: partial?.activitySector ?? 'Dev',
  );
}

调用时只需传入要修改的字段:

final modifiedOrg = fakeOrganisation(
  partial: PartialOrganisation(name: 'MyCompany2', numberOfEmployee: '24')
);
// 输出结果:{id: '1234', name: 'MyCompany2', numberOfEmployee: '24', activitySector: 'Dev'}

方案二:用Map作为Partial参数(轻量版)

如果不想额外创建类,可以直接用Map来传递需要修改的参数:

OrganisationModel fakeOrganisation({Map<String, dynamic>? partial}) {
  return OrganisationModel(
    id: partial?['id'] ?? '1234',
    name: partial?['name'] ?? 'MyCompany',
    numberOfEmployee: partial?['numberOfEmployee'] ?? '68',
    activitySector: partial?['activitySector'] ?? 'Dev',
  );
}

调用方式更简洁:

final modifiedOrg = fakeOrganisation(
  partial: {'name': 'MyCompany2', 'numberOfEmployee': '24'}
);
// 同样得到期望结果

这两种方案都不需要改动原有的OrganisationModel,完美满足你只修改部分参数、其余保留默认假数据的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:45:48