getAndroidApps static method

Future<List<App>> getAndroidApps(
  1. String developerId
)

Implementation

static Future<List<App>> getAndroidApps(String developerId) async {
  try {
    final String? pageContent = await Util._fetchUrl(
      "https://play.google.com/store/apps/dev?id=${developerId.replaceAll(' ', '+')}",
    );
    if (pageContent == null) {
      return [];
    }
    int dataStart = pageContent.indexOf("AF_initDataCallback({key: 'ds:3',");
    dataStart = pageContent.indexOf("data:", dataStart) + 5;
    final int dataEnd = pageContent.indexOf(", sideChannel:", dataStart);

    final String jsonDataString = pageContent.substring(dataStart, dataEnd);
    final List<dynamic> appItems = (jsonDecode(jsonDataString) as dynamic)[0]
        [1][0][21][0] as List<dynamic>;
    return appItems
        .map(
          (i) => App(
            id: i[0][0],
            name: i[3],
            category: i[5],
            developerName: i[14],
            rating:
                (i[4] as List).isEmpty ? 0 : double.tryParse(i[4][0]) ?? 0,
            imageUrl: i[1][3][2],
            url: "https://play.google.com/store/apps/details?id=${i[0][0]}",
            platform: AppPlatform.android,
            isFree: i[7] == null || i[7].isEmpty,
          ),
        )
        .toList();
  } catch (e) {
    dPrint("Exception while parsing Android apps: $e");
  }
  return [];
}