getInstalledBanks static method
Future<List<C2bmemberModel> >
getInstalledBanks(
- C2bmembersModel c2bmembersModel, {
- bool useAndroidLocalIcons = false,
- bool useAndroidLocalNames = false,
Получение списка банков, установленных на устройстве пользователя: IOS/Android передаем модель json, который приходит с https://qr.nspk.ru/proxyapp/c2bmembers.json (C2bmembersModel)
Implementation
static Future<List<C2bmemberModel>> getInstalledBanks(
C2bmembersModel c2bmembersModel, {
bool useAndroidLocalIcons = false,
bool useAndroidLocalNames = false,
}) async {
final c2bmembersInstalled = <C2bmemberModel>[];
if (Platform.isIOS) {
/// Оставляем только schema для проверки присутствия на устройстве
late final List<String> schemaApplications;
schemaApplications = c2bmembersModel.c2bmembersModel.map((c2bmember) => c2bmember.schema).toList();
/// получаем список schema установленных банков
final List<String> installedApplications = (await _channel.invokeMethod('getInstalledBanks', {
'schema_applications': schemaApplications,
}) as List)
.map((installed) => installed as String)
.toList();
/// сравниваем список schema с c2bmembersModel, который пришел с ссылки https://qr.nspk.ru/proxyapp/c2bmembers.json
for (int c2bmembersModelIndex = 0;
c2bmembersModelIndex < c2bmembersModel.c2bmembersModel.length;
c2bmembersModelIndex++) {
for (int indexInstalledSchema = 0;
indexInstalledSchema < installedApplications.length;
indexInstalledSchema++) {
final schemaOrPackageName = c2bmembersModel.c2bmembersModel[c2bmembersModelIndex].schema;
if (schemaOrPackageName == installedApplications[indexInstalledSchema]) {
c2bmembersInstalled.add(c2bmembersModel.c2bmembersModel[c2bmembersModelIndex]);
}
}
}
} else {
/// Оставляем только schema для проверки присутствия на устройстве
late final List<String> packageNamesApplications =
c2bmembersModel.c2bmembersModel.map((c2bmember) => c2bmember.packageName).toList();
/// получаем список schema установленных банков
final List<C2bmemberModelAndroidLocalData> installedApplications =
(await _channel.invokeMethod('getInstalledBanks', {
'application_package_names': packageNamesApplications,
'use_android_local_icons': useAndroidLocalIcons,
'use_android_local_names': useAndroidLocalNames,
}) as List)
.map((installed) => C2bmemberModelAndroidLocalData.fromJson(installed as Map<dynamic, dynamic>))
.toList();
/// сравниваем список schema с c2bmembersModel, который пришел с ссылки https://qr.nspk.ru/proxyapp/c2bmembers.json
for (int c2bmembersModelIndex = 0;
c2bmembersModelIndex < c2bmembersModel.c2bmembersModel.length;
c2bmembersModelIndex++) {
for (int indexInstalledSchema = 0;
indexInstalledSchema < installedApplications.length;
indexInstalledSchema++) {
final packageName = c2bmembersModel.c2bmembersModel[c2bmembersModelIndex].packageName;
if (packageName == installedApplications[indexInstalledSchema].packageName) {
c2bmembersModel.c2bmembersModel[c2bmembersModelIndex].bitmap =
installedApplications[indexInstalledSchema].bitmap;
c2bmembersModel.c2bmembersModel[c2bmembersModelIndex].localName =
installedApplications[indexInstalledSchema].localName;
c2bmembersInstalled.add(c2bmembersModel.c2bmembersModel[c2bmembersModelIndex]);
}
}
}
}
return c2bmembersInstalled;
}