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';23class 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ı:
1import 'package:flutter/foundation.dart';23class 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';23const 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};1415export 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.
0 yorum