Flutter Paket Geliştirme
Paketin kapsamından bir önceki yazıda da bahsetmiştik (Flutter Package kullanımı), kısaca hatırlamak gerekirse modüler olarak kolayca paylaşılabilir kodlar yazmak için kullanıyoruz diyebiliriz.
Bir paketin paket olabilmesi için pubspec.yaml
dosyası ve lib
klasörü barındırması gerekiyor.
lib
klasöründe paketimizin kod dosyaları bulunur, genellikle paketten dış kullanıma açılacak kodlar, paket ismine sahipdart
dosyası ile yapılıyor. Yani bu (tek) dosya içerisinde ilgili exportlar toplanıyor.
Hatta görselde görüldüğü gibi, lib
klasörü içerisinde bir src
klasörü altında paket kodlarını barındırmak da community tarafından benimsenmiş bir yaklaşımdır.
swifty_chat.dart
dosyası (paketin ana dosyası) ise şu şekilde olabilir;
library swifty_chat;export 'package:swifty_chat_data/swifty_chat_data.dart';export 'src/chat.dart' show Chat;
export 'src/chat_input_field.dart';
export 'src/extensions/keys.dart';
export 'src/message_cell_size_configurator.dart';
export 'src/theme/chat_theme.dart';
export 'src/theme/default_theme.dart';
Sadece istediğimiz dosyaları, hatta bir dosyanın sadece bir sınıfını dış kullanıma açabiliriz.
Bu kısıtlamalar ile alakalı şu link faydalı olacaktır.
Flutter core dosyalarından biri olan
material.dart
dosyasına IDE’nizden gidip bahsettiğimiz yaklaşımı oradan da inceleyebilirsiniz.
pubspec.yaml
dosyasına gelince, bu dosya olmalı ki başka bir paket ya da uygulama tarafından paketimiz eklenebilsin.
Tekrardan pubspec
dosyasının görünümünü hatırlamak istersek;
name: package_name
description: Package Description here..
version: 0.0.1environment:
sdk: ">=2.12.0 <3.0.0"dependencies:
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
kabaca bu şekilde olabilir.
Paket türleri
Yine önceki yazımızda plugin
in de aslında bir paket türü olduğundan bahsetmiştik.
Dolayısıyla Dart
ve Plugin
paketleri olarak türlerimizi ikiye ayırabiliriz.
1. Paket oluşturma
flutter create --template=package swifty_chat
Bu komut swifty_chat
isminde bir paket oluşturur, ve bu kapsamda aşağıdaki gibi bazı dosyalar otomatik olarak paketinize eklenecektir, kabaca bunlar hakkında bilgi paylaşalım.
- LICENCE
Varsayılan olarak boş geliyor, buraya paketin kapsamına göre bir lisans ekleyebilirsiniz. Eğer paketinizi GitHub üzerinde saklayacak olursanız, otomatik olarak templatelerden faydalanabilirsiniz.
- test/swifty_chat_test.dart
Unit testlerin barındırıldığı dosya.
- swifty_chat.iml & .idea
IntelliJ IDEleri tarafından kullanılan bir konfigürasyon dosyalarıdır.
- .gitignore
Hangi dosya ya da klasörün Git kapsamına dahil edilmemesini bildirmemizi sağlayan gizli bir dosyadır.
- .metadata
IDEler tarafından Flutter projesinin bazı özelliklerini takip için kullanılan gizli bir dosyadır.
- pubspec.yaml
Paketin bağımlı olduğu başka paketleri ve bir takım özellikleri ayalayabildiğimiz dosyadır.
- README.md
Paketin amacını özetle izah eden bir markdown dosyasıdır.
- lib/swifty_chat.dart
Başka paketler tarafından import edilecek şekilde tasarlanan bir dosyadan yukarıda bahsetmiştik, işte bu o dosyadır.
- CHANGELOG.md
Paketin yeni sürümünü geliştirdikçe ilgili değişikliklerin takibi amacıyla oluşturulmuş bir markdown dosyasıdır.
analysis_options.yaml
dosyasıda Flutter 2.5.0 sürümü ile birlikte varsayılan olarak eklenmektedir, statik kod analizi için eklenen lint kütüphanesinin kullandığı bir konfigürasyon dosyasıdır.
Bu kısımdan sonrası geliştirmek istediğiniz içeriğe göre yazacağınız kodlardan ibaret, hala nasıl ilerleyeciğiniz konusunda güçlük çekiyorsanız https://github.com/EnesKaraosman/swifty_chat şahsi paketimi inceleyebilirsiniz, sorularınız için de GitHub ya da LinkedIn üzerinden irtibata geçebilirsiniz.
Paket geliştirme aşamasında tavsiye etmeden geçmeyeceğim bir konu da bir example projeyi pakete dahil etmeniz, paketinizi bu projeye local dependency olarak ekleyebilirsiniz. Böylelikle hem geliştirme yapıp hem de bu örnek proje üzerinden geliştirmeleri hızlıca kontrol edebilirsiniz. Paylaştığım örnek repositoryde bu da mevcut.