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 getAndroid 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 appnameBu şekilde yaratırsan en başta hoş olur, sonra değiştirmesi zor oluyor. Örnek kullanım:
> flutter create --org com.ipikuka shopping_listFlutter projede dependency'leri görmek için:
> flutter pub depsFlutter kanal bilgisini görmek için:
> flutter channelFlutter kanalı değiştirmek için: stable, beta, dev, and master
> flutter channel <channel-name>
> flutter channel dev
> flutter channel stableTo identify out-of-date package dependencies and get advice on how to update them, use the outdated command
> flutter pub outdatedTo update to the latest compatible versions of all the dependencies listed in the pubspec.yaml file
> flutter pub upgradeLisansları 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 signingReportKomut satırına aşağıdaki de yazılırsa SHA-1'i direkt verecektir.
> keytool -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystoreRelease 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.jksFirebase 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.