الفرق بين المراجعتين لصفحة: «ReactNative/platform»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الواجهة Platform في React Native}}</noinclude> | |||
إليك المثال التالي ([https://snack.expo.dev/@hsoubwiki/platform-api-example تجربة حية]):<syntaxhighlight lang="javascript"> | |||
<syntaxhighlight lang="javascript"> | |||
import React from 'react'; | import React from 'react'; | ||
import { Platform, StyleSheet, Text, ScrollView } from 'react-native'; | import { Platform, StyleSheet, Text, ScrollView } from 'react-native'; | ||
سطر 43: | سطر 41: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== | == الخاصيات == | ||
===<code>constants</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Platform.constants; | Platform.constants; | ||
</syntaxhighlight>تعيد هذه الخاصية كائنًا يحتوي على جميع الثوابت المشتركة والمحددة المتاحة والمتعلقة بالمنصة platform. | </syntaxhighlight>تعيد هذه الخاصية كائنًا يحتوي على جميع الثوابت المشتركة والمحددة المتاحة والمتعلقة بالمنصة platform. | ||
''' | '''خاصيات الكائن''': | ||
{| class="wikitable" | {| class="wikitable" | ||
!الاسم | !الاسم | ||
سطر 57: | سطر 55: | ||
!الوصف | !الوصف | ||
|- | |- | ||
|isTesting | |<code>isTesting</code> | ||
|قيمة منطقية boolean | |قيمة منطقية boolean | ||
|لا | |لا | ||
| | | | ||
|- | |- | ||
|reactNativeVersion | |<code>reactNativeVersion</code> | ||
|كائن object | |كائن object | ||
|لا | |لا | ||
|معلومات حول إصدار React Native. المفاتيح هي <code>major</code> و <code>minor</code> و <code>patch</code> مع <code>prerelease</code> الاختياري والقيم هي أعداد <code>number</code>. | |معلومات حول إصدار React Native. المفاتيح هي <code>major</code> و <code>minor</code> و <code>patch</code> مع <code>prerelease</code> الاختياري والقيم هي أعداد <code>number</code>. | ||
|- | |- | ||
|Version | |<code>Version</code> | ||
(Android) | (Android) | ||
|عدد number | |عدد number | ||
سطر 73: | سطر 71: | ||
|ثابت إصدار نظام التشغيل وهو خاص بنظام Android. | |ثابت إصدار نظام التشغيل وهو خاص بنظام Android. | ||
|- | |- | ||
|Release | |<code>Release</code> | ||
(Android) | (Android) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 79: | سطر 77: | ||
| | | | ||
|- | |- | ||
|Serial | |<code>Serial</code> | ||
(Android) | (Android) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 85: | سطر 83: | ||
|رقم العتاد التسلسلي لجهاز Android. | |رقم العتاد التسلسلي لجهاز Android. | ||
|- | |- | ||
|Fingerprint | |<code>Fingerprint</code> | ||
(Android) | (Android) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 91: | سطر 89: | ||
|سلسلة نصية تحدد البناء بصورة فريدة. | |سلسلة نصية تحدد البناء بصورة فريدة. | ||
|- | |- | ||
|Model | |<code>Model</code> | ||
(Android) | (Android) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 97: | سطر 95: | ||
|اسم المستخدم النهائي المرئي لجهاز Android. | |اسم المستخدم النهائي المرئي لجهاز Android. | ||
|- | |- | ||
|Brand | |<code>Brand</code> | ||
(Android) | (Android) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 103: | سطر 101: | ||
|علامة المستهلك التجارية المرئية التي سيرتبط المنتج / العتاد بها. | |علامة المستهلك التجارية المرئية التي سيرتبط المنتج / العتاد بها. | ||
|- | |- | ||
|Manufacturer | |<code>Manufacturer</code> | ||
Android | Android | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 109: | سطر 107: | ||
|الشركة المصنعة لجهاز Android. | |الشركة المصنعة لجهاز Android. | ||
|- | |- | ||
|ServerHost | |<code>ServerHost</code> | ||
(Android) | (Android) | ||
|سلسلةنصية string | |سلسلةنصية string | ||
سطر 115: | سطر 113: | ||
| | | | ||
|- | |- | ||
|uiMode | |<code>uiMode</code> | ||
(Android) | (Android) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 121: | سطر 119: | ||
|القيم الممكنة: <code>'car'</code> و <code>'desk'</code> و <code>'normal'</code> و <code>'tv'</code> و <code>'watch'</code> و <code>'unknown'</code>. اطّلع على المزيد حول [https://developer.android.com/reference/android/app/UiModeManager Android ModeType]. | |القيم الممكنة: <code>'car'</code> و <code>'desk'</code> و <code>'normal'</code> و <code>'tv'</code> و <code>'watch'</code> و <code>'unknown'</code>. اطّلع على المزيد حول [https://developer.android.com/reference/android/app/UiModeManager Android ModeType]. | ||
|- | |- | ||
|forceTouchAvailable | |<code>forceTouchAvailable</code> | ||
(iOS) | (iOS) | ||
|قيمة منطقية boolean | |قيمة منطقية boolean | ||
سطر 127: | سطر 125: | ||
|تحدّد توفر اللمس ثلاثي الأبعاد 3D Touch على الجهاز. | |تحدّد توفر اللمس ثلاثي الأبعاد 3D Touch على الجهاز. | ||
|- | |- | ||
|interfaceIdiom | |<code>interfaceIdiom</code> | ||
(iOS) | (iOS) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 133: | سطر 131: | ||
|نوع واجهة الجهاز. اطّلع على المزيد حول [https://developer.apple.com/documentation/uikit/uiuserinterfaceidiom UIUserInterfaceIdiom]. | |نوع واجهة الجهاز. اطّلع على المزيد حول [https://developer.apple.com/documentation/uikit/uiuserinterfaceidiom UIUserInterfaceIdiom]. | ||
|- | |- | ||
|osVersion | |<code>osVersion</code> | ||
(iOS) | (iOS) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 139: | سطر 137: | ||
|ثابت إصدار نظام التشغيل وهو خاص بنظام iOS. | |ثابت إصدار نظام التشغيل وهو خاص بنظام iOS. | ||
|- | |- | ||
|systemName | |<code>systemName</code> | ||
(iOS) | (iOS) | ||
|سلسلة نصية string | |سلسلة نصية string | ||
سطر 146: | سطر 144: | ||
|} | |} | ||
===<code>isPad</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Platform.isPad; | Platform.isPad; | ||
سطر 152: | سطر 150: | ||
{| class="wikitable" | {| class="wikitable" | ||
!النوع | !النوع | ||
!المنصة | |||
|- | |- | ||
|قيمة منطقية boolean | |قيمة منطقية boolean | ||
|iOS | |||
|} | |} | ||
===<code>isTV</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Platform.isTV; | Platform.isTV; | ||
سطر 166: | سطر 166: | ||
|} | |} | ||
===<code>isTesting</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Platform.isTesting; | Platform.isTesting; | ||
سطر 176: | سطر 176: | ||
|} | |} | ||
===<code>OS</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static Platform.OS | static Platform.OS | ||
سطر 183: | سطر 183: | ||
!النوع | !النوع | ||
|- | |- | ||
| | |('android', 'ios') | ||
|} | |} | ||
===<code>Version</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Platform.Version; | Platform.Version; | ||
سطر 197: | سطر 197: | ||
|} | |} | ||
== التوابع == | |||
===<code>select()</code>=== | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static select(config: object): any | static select(config: object): any | ||
سطر 264: | سطر 264: | ||
* [https://reactnative.dev/docs/platform صفحة Platform في توثيق React Native الرسمي.] | * [https://reactnative.dev/docs/platform صفحة Platform في توثيق React Native الرسمي.] | ||
[[تصنيف:ReactNative]] | |||
[[تصنيف:React Native API]] |
المراجعة الحالية بتاريخ 14:13، 9 أكتوبر 2021
إليك المثال التالي (تجربة حية):
import React from 'react';
import { Platform, StyleSheet, Text, ScrollView } from 'react-native';
const App = () => {
return (
<ScrollView contentContainerStyle={styles.container}>
<Text>OS</Text>
<Text style={styles.value}>{Platform.OS}</Text>
<Text>OS Version</Text>
<Text style={styles.value}>{Platform.Version}</Text>
<Text>isTV</Text>
<Text style={styles.value}>{Platform.isTV.toString()}</Text>
{Platform.OS === 'ios' && <>
<Text>isPad</Text>
<Text style={styles.value}>{Platform.isPad.toString()}</Text>
</>}
<Text>Constants</Text>
<Text style={styles.value}>
{JSON.stringify(Platform.constants, null, 2)}
</Text>
</ScrollView>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
value: {
fontWeight: '600',
padding: 4,
marginBottom: 8
}
});
export default App;
الخاصيات
constants
Platform.constants;
تعيد هذه الخاصية كائنًا يحتوي على جميع الثوابت المشتركة والمحددة المتاحة والمتعلقة بالمنصة platform.
خاصيات الكائن:
الاسم | النوع | اختياري | الوصف |
---|---|---|---|
isTesting
|
قيمة منطقية boolean | لا | |
reactNativeVersion
|
كائن object | لا | معلومات حول إصدار React Native. المفاتيح هي major و minor و patch مع prerelease الاختياري والقيم هي أعداد number .
|
Version
(Android) |
عدد number | لا | ثابت إصدار نظام التشغيل وهو خاص بنظام Android. |
Release
(Android) |
سلسلة نصية string | لا | |
Serial
(Android) |
سلسلة نصية string | لا | رقم العتاد التسلسلي لجهاز Android. |
Fingerprint
(Android) |
سلسلة نصية string | لا | سلسلة نصية تحدد البناء بصورة فريدة. |
Model
(Android) |
سلسلة نصية string | لا | اسم المستخدم النهائي المرئي لجهاز Android. |
Brand
(Android) |
سلسلة نصية string | لا | علامة المستهلك التجارية المرئية التي سيرتبط المنتج / العتاد بها. |
Manufacturer
Android |
سلسلة نصية string | لا | الشركة المصنعة لجهاز Android. |
ServerHost
(Android) |
سلسلةنصية string | نعم | |
uiMode
(Android) |
سلسلة نصية string | لا | القيم الممكنة: 'car' و 'desk' و 'normal' و 'tv' و 'watch' و 'unknown' . اطّلع على المزيد حول Android ModeType.
|
forceTouchAvailable
(iOS) |
قيمة منطقية boolean | لا | تحدّد توفر اللمس ثلاثي الأبعاد 3D Touch على الجهاز. |
interfaceIdiom
(iOS) |
سلسلة نصية string | لا | نوع واجهة الجهاز. اطّلع على المزيد حول UIUserInterfaceIdiom. |
osVersion
(iOS) |
سلسلة نصية string | لا | ثابت إصدار نظام التشغيل وهو خاص بنظام iOS. |
systemName
(iOS) |
سلسلة نصية string | لا | ثابت اسم نظام التشغيل وهو خاص بنظام iOS. |
isPad
Platform.isPad;
تعيد هذه الخاصية قيمة منطقية تحدد إذا كان الجهاز عبارة عن جهاز iPad.
النوع | المنصة |
---|---|
قيمة منطقية boolean | iOS |
isTV
Platform.isTV;
تعيد هذه الخاصية قيمة منطقية تحدد ما إذا كان الجهاز عبارة عن تلفزيون TV.
النوع |
---|
قيمة منطقية boolean |
isTesting
Platform.isTesting;
تعيد هذه الخاصية قيمة منطقية تحدد ما إذا كان التطبيق يعمل في وضع المطور مع ضبط راية الاختبار.
النوع |
---|
قيمة منطقية boolean |
OS
static Platform.OS
تعيد هذه الخاصية قيمة السلسلة النصية التي تمثل نظام التشغيل الحالي.
النوع |
---|
('android', 'ios') |
Version
Platform.Version;
تعيد هذه الخاصية إصدار نظام التشغيل.
النوع |
---|
عدد number في نظام Android
سلسلة نصية string في نظام iOS |
التوابع
select()
static select(config: object): any
يعيد هذا التابع القيمة الأنسب للمنصة التي تعمل عليها حاليًا.
المعاملات Parameters:
الاسم | النوع | مطلوب | الوصف |
---|---|---|---|
config | كائن object | نعم | اطّلع على وصف config أدناه |
اختر التابع الذي يعيد القيمة الأنسب للمنصة التي تعمل عليها حاليًا، وهذا يعني أنه إن عملت على هاتف، فستحظى مفاتيح android
و ios
بالأفضلية. إذا لم تُحدَّد هذه المفاتيح، فسيُستخدَم المفتاح native
ثم المفتاح default
.
المعامل config
هو كائن له المفاتيح التالية:
android
(نوعه any)ios
(نوعه any)native
(نوعه any)default
(نوعه any)
مثال عن كيفية الاستخدام:
import { Platform, StyleSheet } from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
...Platform.select({
android: {
backgroundColor: 'green'
},
ios: {
backgroundColor: 'red'
},
default: {
// المنصات الأخرى كالويب مثلُا
backgroundColor: 'blue'
}
})
}
});
سينتج عن ذلك أن تكون الحاوية flex: 1
على جميع المنصات، ولون خلفية أخضر على نظام Android، ولون خلفية أحمر على نظام iOS، ولون خلفية أزرق على المنصات الأخرى. بما أن قيمة مفتاح المنصة المقابل يمكن أن تكون من النوع any
، لذلك يمكن أيضًا استخدام التابع select
لإعادة المكونات الخاصة بالمنصة كما يلي:
const Component = Platform.select({
ios: () => require('ComponentIOS'),
android: () => require('ComponentAndroid')
})();
<Component />;
const Component = Platform.select({
native: () => require('ComponentForNative'),
default: () => require('ComponentForWeb')
})();
<Component />;