Flutter kurulumunu Windows'ta C:\flutter
adlı klasöre yaptım.--
Environment Variables içindeki PATH değişkenine C:\flutter\bin
ekledim.
Flutter Galery uygulaması, Flutter ile gelen widget'ların örnek kullanımlarını göstermektedir. Flutter kurulurken %FLUTTER-DIRECTORY%/examples/flutter_gallery altında gelmektedir.
> cd C:\flutter\examples\flutter_gallery
> flutter pub get
Android phone debug modunda pc’ye bağla
> flutter run –release -d <Telephone>
> flutter run –release -d HVY0219223005212
> cd C:\MyCodeRepo\flutterprojects
> flutter create --org com.yourdomain appname
Bu şekilde yaratırsan en başta hoş olur, sonra değiştirmesi zor oluyor. Örnek kullanım:
> flutter create --org com.ipikuka shopping_list
Flutter projede dependency'leri görmek için:
> flutter pub deps
Flutter kanal bilgisini görmek için:
> flutter channel
Flutter kanalı değiştirmek için: stable, beta, dev, and master
> flutter channel <channel-name>
> flutter channel dev
> flutter channel stable
To identify out-of-date package dependencies and get advice on how to update them, use the outdated command
> flutter pub outdated
To update to the latest compatible versions of all the dependencies listed in the pubspec.yaml file
> flutter pub upgrade
Lisansları kabul etmek için
flutter doctor --android-licences
Öncelikle bilgisayarda Java SE Development Kit 14 kurulu olması gerekiyor. Windows'ta kurulu bu JDK için Environment Variable'ların olduğunu kontrol edelim, yoksa Kullanıcı için değişkenler bölümüne ekleyelim. (JDK'nın kurulu olduğu klasör ne ise onu dikkate alalım)
JAVA_HOME olarak C:\Program Files\Java\jdk-14.0.1
JAVA_BIN olarak C:\Program Files\Java\jdk-14.0.1\bin
JAVA_LIB olarak C:\Program Files\Java\jdk-14.0.1\lib
PATH değişkenine mevcutlara ilave olarak C:\Program Files\Java\jdk-14.0.1\bin
"c:\path-to\your-flutter-project-folder\android\gradle\wrapper\gradle-wrapper.properties" dosyasındaki distributionUrl'nin uyumlu gradle olmasını sağlayalım.
distributionUrl=https://services.gradle.org/distributions/gradle-6.3-all.zip
Tüm bu ayarlamaları yaptıktan sonra CMD komut satırında flutter projesinin android klasörüne gidelim,
> cd c:\path-to\your-flutter-project-folder\android\
Komut satırına aşağıdaki komutu yazalım, bu komut gerekli tüm servisler için SHA-1'leri ve diğer bilgileri ekrana raporlayacaktır.
> gradlew signingReport
Komut satırına aşağıdaki de yazılırsa SHA-1'i direkt verecektir.
> keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Release için SHA-1 ise, android studio'da jks dosyası oluşturuluyor, sonra komut satırında,
> keytool -exportcert -list -v -alias <your-key-name> -keystore <path-to-production-keystore>
> keytool -list -v -alias releasekey -keystore C:\MyCodeRepo\fluttergithubprojects\xinthink_flt_keep\releaseKey.jks
Firebase console'da proje dosyası açılır, Ayarlarda SHA-1 girilir ve kaydedilir. Güncül google-services.json dosyası indirilir, flutter project içinde Andoid içindeki app klaörüne yüklenir. c:\path-to\your-flutter-project-folder\android\app\
You are probably missing npm in your path. You can check it by echo %PATH% to make sure. Thus, open Environmental variables > system variables > path see if you could not find C:\Users\yourusername\AppData\Roaming\npm there.
firebase login Firebase CLI ile firebase sistemine bağlantı sağlamış oluruz.
firebase init Flutter projesinin ana klasöründe iken bu komut ile projemize firebase CLI entegre edilmiş olur. Seçerken use existing project seçip, sadece functionları seçtik ve typescript seçtik. Ana klasörümüze firebase.json ve .firebaserc oluşmuş olur. At the end of initialization, Firebase automatically creates the following two files at the root of your local app directory: A firebase.json configuration file that lists your project configuration. A .firebaserc file that stores your project aliases.
firebase deploy --only functions functions klasörü içindeki src'de varsa index.ts'yi js'e çevirip functions içine koyar ve firebase functions'a deploy eder.
firebase projects:list
firebase deploy --only functions:webhookNew
firebase functions:delete webhook
My personal taste: InheritedWidget/Provider + ValueNotifier/ChangeNotifier + sealedclass (freezed) + BLoC (although this violates BLoC rules). This is a solid approach I don't have any obstacles with this approach so far.