128 lines
4.5 KiB
Dart
128 lines
4.5 KiB
Dart
import 'dart:io';
|
|
import 'package:device_info_plus/device_info_plus.dart';
|
|
|
|
class DevicePerformanceManager {
|
|
/// القائمة البيضاء لموديلات الهواتف القوية (Flagships Only)
|
|
/// أي هاتف يبدأ موديله بأحد هذه الرموز سيعتبر قوياً
|
|
static const List<String> _highEndSamsungModels = [
|
|
'SM-S', // سلسلة Galaxy S21, S22, S23, S24 (S901, S908, S911...)
|
|
'SM-F', // سلسلة Fold و Flip (Z Fold, Z Flip)
|
|
'SM-N9', // سلسلة Note 9, Note 10, Note 20
|
|
'SM-G9', // سلسلة S10, S20 (G970, G980...)
|
|
];
|
|
|
|
static const List<String> _highEndGoogleModels = [
|
|
'Pixel 6',
|
|
'Pixel 7',
|
|
'Pixel 8',
|
|
'Pixel 9',
|
|
'Pixel Fold'
|
|
];
|
|
|
|
static const List<String> _highEndHuaweiModels = [
|
|
'ELS-', // P40 Pro
|
|
'ANA-', // P40
|
|
'HMA-', // Mate 20
|
|
'LYA-', // Mate 20 Pro
|
|
'VOG-', // P30 Pro
|
|
'ELE-', // P30
|
|
'NOH-', // Mate 40 Pro
|
|
'AL00', // Mate X series (some)
|
|
];
|
|
|
|
static const List<String> _highEndXiaomiModels = [
|
|
'2201122', // Xiaomi 12 series patterns often look like this
|
|
'2210132', // Xiaomi 13
|
|
'2304FPN', // Xiaomi 13 Ultra
|
|
'M2007J1', // Mi 10 series
|
|
'M2102K1', // Mi 11 Ultra
|
|
];
|
|
|
|
static const List<String> _highEndOnePlusModels = [
|
|
'GM19', // OnePlus 7
|
|
'HD19', // OnePlus 7T
|
|
'IN20', // OnePlus 8
|
|
'KB20', // OnePlus 8T
|
|
'LE21', // OnePlus 9
|
|
'NE22', // OnePlus 10
|
|
'PHB110', // OnePlus 11
|
|
'CPH', // Newer OnePlus models
|
|
];
|
|
|
|
/// دالة الفحص الرئيسية
|
|
static Future<bool> isHighEndDevice() async {
|
|
// 1. الآيفون دائماً قوي (نظام الرسوميات فيه متفوق حتى في الموديلات القديمة)
|
|
if (Platform.isIOS) return true;
|
|
|
|
if (Platform.isAndroid) {
|
|
try {
|
|
final androidInfo = await DeviceInfoPlugin().androidInfo;
|
|
|
|
String manufacturer = androidInfo.manufacturer.toLowerCase();
|
|
String model =
|
|
androidInfo.model.toUpperCase(); // نحوله لحروف كبيرة للمقارنة
|
|
String hardware = androidInfo.hardware.toLowerCase(); // المعالج
|
|
|
|
// --- الفحص العكسي (الحظر المباشر) ---
|
|
// إذا كان المعالج من الفئات الضعيفة جداً المشهورة في الهواتف المقلدة
|
|
// mt65xx, mt6735, sc77xx هي معالجات رخيصة جداً
|
|
if (hardware.contains('mt65') ||
|
|
hardware.contains('mt6735') ||
|
|
hardware.contains('sc77')) {
|
|
return false;
|
|
}
|
|
|
|
// --- فحص القائمة البيضاء (Whitelist) ---
|
|
|
|
// 1. Samsung Flagships
|
|
if (manufacturer.contains('samsung')) {
|
|
for (var prefix in _highEndSamsungModels) {
|
|
if (model.startsWith(prefix)) return true;
|
|
}
|
|
}
|
|
|
|
// 2. Google Pixel (6 and above)
|
|
if (manufacturer.contains('google')) {
|
|
for (var prefix in _highEndGoogleModels) {
|
|
if (model.contains(prefix.toUpperCase())) return true;
|
|
}
|
|
}
|
|
|
|
// 3. Huawei Flagships
|
|
if (manufacturer.contains('huawei')) {
|
|
for (var prefix in _highEndHuaweiModels) {
|
|
if (model.startsWith(prefix)) return true;
|
|
}
|
|
}
|
|
|
|
// 4. OnePlus Flagships
|
|
if (manufacturer.contains('oneplus')) {
|
|
for (var prefix in _highEndOnePlusModels) {
|
|
if (model.startsWith(prefix)) return true;
|
|
}
|
|
}
|
|
|
|
// 5. Xiaomi Flagships
|
|
if (manufacturer.contains('xiaomi') ||
|
|
manufacturer.contains('redmi') ||
|
|
manufacturer.contains('poco')) {
|
|
// شاومي تسميتها معقدة، لذا سنعتمد على فحص الرام كعامل مساعد هنا فقط
|
|
// لأن هواتف شاومي القوية عادة لا تزور الرام
|
|
// الرام يجب أن يكون أكبر من 6 جيجا (بايت)
|
|
double ramGB = (androidInfo.availableRamSize) / (1024 * 1024 * 1024);
|
|
if (ramGB > 7.5)
|
|
return true; // 8GB RAM or more is usually safe for Xiaomi high-end
|
|
}
|
|
|
|
// إذا لم يكن من ضمن القوائم أعلاه، نعتبره جهازاً متوسطاً/ضعيفاً ونعرض الرسم البسيط
|
|
return false;
|
|
} catch (e) {
|
|
// في حال حدوث خطأ في الفحص، نعود للوضع الآمن (الرسم البسيط)
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|