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

Flutter中如何从API提取姓名的前两个词数据

解决方案

你可以通过添加姓名处理的辅助函数,在解析API返回数据时对姓名字段做截断处理,具体修改如下:

1. 编写姓名截断辅助函数

先定义一个函数,用来将超过两个词的姓名截取前两个词,同时处理空值和异常格式:

String truncateName(String? fullName) {
  if (fullName == null || fullName.isEmpty) return '';
  List<String> nameParts = fullName.split(' ');
  // 过滤姓名中可能存在的空字符串(比如连续空格的情况)
  nameParts.removeWhere((part) => part.isEmpty);
  if (nameParts.length > 2) {
    return nameParts.take(2).join(' ');
  }
  return fullName;
}

2. 修改API数据解析逻辑

在遍历API返回的元素时,先处理姓名字段,再创建Qari对象:

List<Qari> qarilist = [];

Future<List<Qari>> getQariList() async {
  const url = "https://quranicaudio.com/api/qaris";
  final res = await http.get(Uri.parse(url));

  jsonDecode(res.body).forEach((element) {
    if (qarilist.length < 20) {
      // 处理姓名字段
      String processedName = truncateName(element['name']);
      // 复制原数据并替换处理后的姓名
      Map<String, dynamic> modifiedElement = Map.from(element)..['name'] = processedName;
      qarilist.add(Qari.fromjson(modifiedElement));
    }
  });

  qarilist.sort((a, b) => a.name!.compareTo(b.name!));
  return qarilist;
}

可选优化

如果你的Qari类支持自定义构造函数(而非仅依赖fromJson),也可以直接在创建对象时传入处理后的姓名,示例:

qarilist.add(Qari(
  name: truncateName(element['name']),
  // 其他属性根据element对应字段赋值
));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:37:32