package:flutter/services.dart

0:00

package:flutter/services.dart Flutter’da platformlar arası (Android, iOS, Web, masaüstü vb.) etkileşim fonksiyonunu sağlayan çok önemli bir kütüphanedir. Pano, sistem gezintisi, klavye olayları, kanal iletişimleri vb. gibi platforma özgü özelliklere erişmek için yardımcı sınıflar ve yöntemler içerir.

Aşağıda  services.dart bazı temel sınıfların ve yöntemlerin ayrıntılı açıklamaları yer almaktadır:


1.  SystemChannels 

SystemChannels Flutter’ın platformla iletişim kurmasını sağlayan kanal sınıfıdır ve platformla çift yönlü iletişim için bir dizi önceden tanımlanmış kanal sağlar.

Ortak kanallar:

  • SystemChannels.platform: Pano, sistem navigasyonu vb. gibi temel platform işlevlerine erişmek için kullanılır.
  • SystemChannels.textInput: Platformun metin giriş sistemiyle etkileşim kurmak için kullanılır.
  • SystemChannels.keyEvent: Klavye olaylarını yönetmek için kullanılır.
  • SystemChannels.lifecycle: Uygulama yaşam döngüsü olaylarını izlemek için kullanılır.
  • SystemChannels.navigation: Sistem gezinme olaylarını (geri düğmesi gibi) işlemek için kullanılır.

Örnek: Geri Düğmesini Dinleme

SystemChannels.navigation.setMethodCallHandler((call) async {
  if (call.method == 'popRoute') {
    // Kullanıcı geri düğmesine bastı
    print('Back button pressed');
  }
});

2.  Clipboard 

Clipboard Sınıf sistem panosuna erişim sağlar.

Ana yöntemler:

  • Clipboard.setData(ClipboardData data): Verileri panoya kopyala.
  • Clipboard.getData(String format): Panodan veri al.

Örnek: Metni kopyalama ve yapıştırma

import 'package:flutter/services.dart';

// Metni panoya kopyala
void copyToClipboard(String text) async {
  await Clipboard.setData(ClipboardData(text: text));
  print('Text copied to clipboard');
}

// Panodan metin al
void pasteFromClipboard() async {
  ClipboardData? data = await Clipboard.getData('text/plain');
  if (data != null) {
    print('Pasted text: ${data.text}');
  }
}

3.  MethodChannel

MethodChannel Flutter’ın platformla (Android, iOS vb.) iletişim kurmasını sağlayan temel araçtır. Flutter’ın platform kodunu çağırabilmesini ve platformdan dönüş değerleri alabilmesini sağlar.

Ana yöntemler:

  • MethodChannel.invokeMethod(String method, [dynamic arguments]): Platform metodunu çağırın.
  • MethodChannel.setMethodCallHandler(Future<dynamic> handler(MethodCall call)): Platformu Flutter’ın işleyicisini çağıracak şekilde ayarlayın.

Örnek: Bir platform yöntemini çağırma

import 'package:flutter/services.dart';

// Bir MethodChannel oluşturun
const platform = MethodChannel('com.example.app/channel');

// Platform yöntemlerini çağırma
void getBatteryLevel() async {
  try {
    final int result = await platform.invokeMethod('getBatteryLevel');
    print('Battery level: $result%');
  } on PlatformException catch (e) {
    print('Failed to get battery level: ${e.message}');
  }
}

4.  EventChannel 

EventChannel Platformdan Flutter’a olay akışlarını (sensör verileri, ağ durumu değişiklikleri vb.) göndermek için kullanılır.

Ana yöntemler:

  • EventChannel.receiveBroadcastStream([dynamic arguments]): Platformun gönderdiği etkinlik akışını dinleyin.

Örnek: Ağ durumu değişikliklerini dinleme

import 'package:flutter/services.dart';

// Bir EventChannel oluşturun
const eventChannel = EventChannel('com.example.app/network');

// Ağ durumu değişikliklerini dinleyin
void listenToNetworkChanges() {
  eventChannel.receiveBroadcastStream().listen((event) {
    print('Network status changed: $event');
  }, onError: (error) {
    print('Error: $error');
  });
}

5.  PlatformException 

PlatformException Flutter’ın platformla iletişimi sırasında atılan istisna sınıfıdır, genellikle platform metodlarındaki hataları yakalamak için kullanılır.

Birincil Nitelikler:

  • code: Hata kodu.
  • message:hata mesajı.
  • details: Hatanın detayları.

Örnek: Platform istisnalarını yakalama

try {
  await platform.invokeMethod('someMethod');
} on PlatformException catch (e) {
  print('Error: ${e.code}, ${e.message}');
}

6.  SystemUiOverlayStyle 

SystemUiOverlayStyle Durum çubuğu ve gezinme çubuğunun rengi gibi sistem kullanıcı arayüzünün stilini ayarlamak için kullanılır.

Birincil Nitelikler:

  • statusBarColor: Durum çubuğu arka plan rengi.
  • statusBarIconBrightness: Durum çubuğu simgesi parlaklığı ( Brightness.light veya  Brightness.dark).
  • systemNavigationBarColor: Gezinme çubuğu arka plan rengi.
  • systemNavigationBarIconBrightness: Gezinme çubuğu simgesi parlaklığı.

Örnek: Durum çubuğu stilini ayarlama

import 'package:flutter/services.dart';

void setSystemUIOverlayStyle() {
  SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
    statusBarColor: Colors.transparent,
    statusBarIconBrightness: Brightness.dark,
    systemNavigationBarColor: Colors.white,
    systemNavigationBarIconBrightness: Brightness.dark,
  ));
}

7.  SystemChrome 

SystemChrome Uygulama pencerelerini ve sistem kullanıcı arayüzünü kontrol etmeye yönelik işlevler sağlar.

Ana yöntemler:

  • SystemChrome.setEnabledSystemUIMode(SystemUiMode mode): Sistem kullanıcı arayüzü modunu (örneğin tam ekran) ayarlayın.
  • SystemChrome.setPreferredOrientations(List<DeviceOrientation> orientations): Uygulamanın tercih edilen yönünü ayarlayın.
  • SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle style): Sistem kullanıcı arayüzünün stilini ayarlayın.

Örnek: Tam ekran modunu ayarlama

import 'package:flutter/services.dart';

void enableFullScreen() {
  SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
}


8.  TextInput 

TextInput Platformun metin giriş sistemiyle etkileşime girmek için sınıf.

Ana yöntemler:

  • TextInput.attach(TextInputConnection connection, TextInputConfiguration configuration): Metin giriş sistemine bağlanın.
  • TextInput.finishAutofillContext(): Otomatik doldurma bağlamını tamamlayın.

Örnek: Metin girişini kontrol etme

import 'package:flutter/services.dart';

void controlTextInput() {
  final TextInputConnection connection = TextInput.attach(
    TextInputClient(),
    TextInputConfiguration(),
  );
  connection.show();
}

9.  KeyEvent 

KeyEvent Klavye olaylarını işleme sınıfı.

Ana yöntemler:

  • RawKeyboard.instance.addListener(ValueChanged<RawKeyEvent> listener):Klavye olaylarını dinleyin.

Örnek: Klavye olaylarını dinleme

import 'package:flutter/services.dart';

void listenToKeyEvents() {
  RawKeyboard.instance.addListener((event) {
    if (event is RawKeyDownEvent) {
      print('Key pressed: ${event.logicalKey}');
    }
  });
}

Özetle

services.dart Platformla etkileşim kurmak için zengin araç sınıfları ve yöntemler sunar. Bununla aşağıdaki işlevleri gerçekleştirebilirsiniz:

  • Panoya erişin.
  • Platform koduyla ( MethodChannel ve  EventChannel) iletişim kurun.
  • Kontrol sistemi kullanıcı arayüzü stilini ve davranışını belirler.
  • Klavye olaylarını ve metin girişini yönetir.

Ai Haberleri

Ai Haberleri : 28 Mart 2025

2025-3-27 20:34:46

Genel

Ai Haberleri : 16 Nisan 2025

2025-4-15 23:45:27

0 yanıt AMakale Yazarı MÜyeler
    Henüz bir tartışma yok, ne düşündüğünüzü bize bildirin
Kişisel Merkez
Sepet
Kuponlar
Bugünün Girişi
Yeni özel mesaj Özel mesaj listesi
aramak