Flutter ve React Native'de Platform Farkı: iOS ve Android Ayrımı

Çapraz platform uygulamaları geliştirirken iOS ve Android arasındaki davranış farkları kaçınılmaz. Bir özellik iOS'ta çalışırken Android'te sorun yaratabilir, ya da tasarım iki platform için tamamen farklı olmalı. Bunu yönetmenin en temiz yolu conditional code'dur.

Flutter'da bunu yapmanın birkaç yolu var. En basiti `dart:io` kütüphanesini kullanmak. `Platform` sınıfı ile `isIOS` ve `isAndroid` özelliklerini kontrol edebilirsin.

1import 'dart:io';
2
3class PlatformCheck extends StatelessWidget {
5Widget build(BuildContext context) {
6return Scaffold(
7appBar: AppBar(title: Text('Platform Farkı')),
8body: Center(
9child: Platform.isIOS? Text('Bu iOS uygulaması'): Text('Bu Android uygulaması'),
10),
11);
12}
13}

Beklenen çıktı: Uygulama iOS'ta "Bu iOS uygulaması", Android'te "Bu Android uygulaması" gösterir.

Daha karmaşık durumlar için `defaultTargetPlatform` kullan. Örneğin, iOS'ta native stil (Cupertino), Android'te Material tasarımı:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1import 'package:flutter/foundation.dart';
2
3class AdaptiveButton extends StatelessWidget {
5Widget build(BuildContext context) {
6if (defaultTargetPlatform == TargetPlatform.iOS) {
7return CupertinoButton(
8child: Text('iOS Butonu'),
9onPressed: () {},
10);
11} else if (defaultTargetPlatform == TargetPlatform.android) {
12return ElevatedButton(
13child: Text('Android Butonu'),
14onPressed: () {},
15);
16}
17return SizedBox();
18}
19}

React Native'de ise `Platform` modülünü import et ve `Platform.OS` kontrol et:

1import { Platform, Text, View } from 'react-native';
2
3const App = () => {
4return (
5<View>
6{Platform.OS === 'ios'? (
7<Text>Bu iOS uygulaması</Text>
8): (
9<Text>Bu Android uygulaması</Text>
10)}
11</View>
12);
13};
14
15export default App;

Platform-spesifik dosyalar da kullanabilirsin. `MyComponent.ios.js` ve `MyComponent.android.js` oluştur; bundler otomatik doğru dosyayı yükler.

Sık yapılan hata: `Platform.isIOS` kontrolü cihazda çalışırken emülatörde yanlış sonuç verebilir. Geliştirme sırasında her iki platformda test et. Ayrıca `defaultTargetPlatform` debug modda güvenilir olmayabilir; release build'de kontrol et.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz