ມາແບ່ງ flavors ໃນ flutter ໃຫ້ມັນງ່າຍຈົນຕາຍດ້ວຍ flutter_flavorizr

xangnam phiasakha
LaoITDev
Published in
2 min readJul 16, 2023
credit: https://www.youtube.com/watch?v=Vhm1Cv2uPko&ab_channel=MarcusNg

ຈາກບົດຄວາມກ່ອນໜ້ານີ້ຂອງຜູ້ຂຽນທີ່ວ່າດ້ວຍເລື່ອງຂອງການແບ່ງ enviroment ໃນການພັດທະນາແອັບດ້ວຍ flutter ຖ້າຍັງບໍ່ທັນໄດ້ອ່ານໄປຫາອ່ານກັນກ່ອນໄດ້ເລີຍ

ຈະເຫັນວ່າການແບ່ງ enviroment ຈະມາຄູ່ກັບການແບ່ງ flavors ເຊິ່ງໃນແຕ່ລະ platform ບໍ່ວ່າເປັນ andorid ios macos … ຈະມີການ config ທີ່ແຕກຕ່າງກັນ. ສະນັ້ນໃນການເຮັດ flavor ຈຶ່ງເປັນວຽກທີ່ຍາກ ແລະ ສັບຊ້ອນສົມຄວນເພາະຕ້ອງມີຄວາມຮູ້ໃນການເຮັດແອັບໃນແຕ່ລະ platfrom ມາລະດັບໜຶ່ງ ແລະ ຍັງໃຊ້ເວລາຫຼາຍໃນການ setup project ໜຶ່ງໆຂຶ້ນມາ. ຖ້າໃຜເຈີບັນຫາເລື່ອງການ setup flavors ຫຼື ຄິດຍາກທີ່ຈະເລີ່ມສຶກສາມັນກໍ່ເຊີນມາທາງນີ້ໄດ້ເລີຍຜູ້ຂຽນຂໍ້ສະເໜີເຄື່ອງມືທີ່ຈັດການ flavors ໃຫ້ເຮົາແບບໂຄດງ່າຍໂຄດສະບາຍນັ້ນຄື flutter_flavorizr.

Install

ເພີ່ມໄປໃນ pubspec.yaml ໃນສ່ວນຂອງ dev_dependencies ດັ່ງລຸ່ມນີ້:

dev_dependencies:
flutter_flavorizr: ^2.2.1

run

$> flutter pub get

ພຽງເທົ່ານີ້ກໍ່ພ້ອມໃຊ້ງານ

Usage

ສ້າງ file flavorizr.yaml ໃນ root project ແລ້ວ config ຕາມຕ້ອງການໄດ້ເລີຍ.

  • ຕົວຢ່າງ config
app:
android:
flavorDimensions: 'version'

flavors:
dev:
app:
name: "Good App DEV"

android:
applicationId: "com.good.app.dev"
firebase:
config: ".firebase/dev/android/google-services.json"
ios:
bundleId: "com.good.app.dev"
firebase:
config: ".firebase/dev/ios/GoogleService-Info.plist"
prod:
app:
name: "Good App"

android:
applicationId: "com.good.app"
firebase:
config: ".firebase/prod/android/google-services.json"
ios:
bundleId: "com.good.app"
firebase:
config: ".firebase/prod/ios/GoogleService-Info.plist"

ide: vscode

ຫຼັງຈາກນັ້ນ run ຄຳສັ່ງ

$> flutter pub run flutter_flavorizr

ພຽງເທົ່ານີ້ flutter_flavorizr ກໍ່ສ້າງ flavors dev ແລະ prod ໃຫ້ເຮົາແບບອັດຕະໂນມັດ. ສະບາຍກວ່ານີ້ມີອີກບໍ່!!. ຈາກ config ຂ້າງເທິງຈະເຫັນວ່າມີການອ້າງເຖິງ firebase config ແມ່ນແລ້ວທຸກຄົນ! flutter_flavorizr ຈະ config ໃນການ load file ນີ້ໃຫ້ເຮົາສຳເລັດຮຽບຮ້ອຍແບບບໍ່ຕ້ອງໄປເຮັດຫຍັງເລີຍໂດຍສະເພາະ ios ທີ່ແຕ່ກ່ອນຕ້ອງໄດ້ຂຽນ script ຂຶ້ນມາເອງເພື່ອ load file ນີ້ແຕ່ຕອນນີ້ flutter_flavorizr ເຮັດໃຫ້ພວກເຮົາຮຽບຮ້ອຍແລ້ວວວວວວວວວວວ.

ນອກຈາກນີ້ເຮົາຍັງສາມາດ custom processors set ເຊິ່ງເປັນ set ໃນການຈັດການ flavors ໃຫ້ເຮົາເຊັ່ນວ່າ: ເຮົາບໍ່ຢາກໃຫ້ສ້າງ assets icon ແຍກເປັນແຕ່ລະ flavor ກໍ່ສາມາດກຳນົດຢູ່ສ່ວນນີ້ໄດ້ເລີຍ.

  • example config
app:
android:
flavorDimensions: 'version'

instructions:
- assets:download
- assets:extract
- android:androidManifest
- android:buildGradle
- android:icons
- flutter:flavors
- flutter:app
- flutter:main
- flutter:targets
- ios:xcconfig
- ios:buildTargets
- ios:schema
- ios:icons
- ios:plist
- ios:launchScreen
- google:firebase
- assets:clean
- ide:config

...

ຖ້າເຮົາບໍ່ກຳນົດ instructions ຈະເປັນການໃຊ້ default processors set

- assets:download
- assets:extract
- android:androidManifest
- android:buildGradle
- android:dummyAssets
- android:icons
- flutter:flavors
-flutter:app
- flutter:pages
- flutter:main
- flutter:targets
- ios:xcconfig
- ios:buildTargets
- ios:schema
- ios:dummyAssets
- ios:icons
- ios:plist
- ios:launchScreen
- macos:xcconfig
- macos:configs
- macos:buildTargets
- macos:schema
- macos:dummyAssets
- macos:icons
- macos:plist
- google:firebase
- huawei:agconnect
- assets:clean
- ide:config

ສາມາດສຶກສາ config ຕ່າງໆໄດ້ ທີ່ນີ້

Note:flutter_flavorizr ຈະບໍ່ງໍແງກັບ clean Flutter project. ໃຜບໍ່ clean ກໍ່ໂຕໃຜໂຕມັນ ຮະຮະຮະ

ມາຮອດນີ້ກໍ່ຂໍ້ຈົບບົດຄວາມສັ້ນໆນີ້ໄວ້ເທົ່ານີ້ ຫວັງວ່າທຸກຄົນຈະແບ່ງ flavors ກັນໄດ້ແບບບໍ່ມີບັນຫາບໍ່ເສຍເວລານັບແຕ່ນີ້ໄປ!!!.

--

--