Cấu hình là một khía cạnh quan trọng trong phát triển ứng dụng, bao gồm cả Flutter. Ứng dụng cần được cấu hình khác nhau cho các môi trường khác nhau như phát triển, staging và production. Dart Environment Config là một thư viện tiện ích giúp việc quản lý cấu hình cho ứng dụng Flutter trở nên dễ dàng và an toàn hơn.
File .env cực kỳ quan trọng trong việc phát triển ứng dụng Flutter. Nó giúp bạn tránh việc lưu trữ thông tin nhạy cảm trực tiếp trong mã nguồn, đồng thời giữ cho mã nguồn của bạn gọn gàng và dễ quản lý hơn.
Bắt đầu thôi
Tại sao package này là cần thiết?
Gói này cho phép tích hợp tạo cấu hình dựa trên môi trường một cách dễ dàng.
Không giống như hầu hết các cấu hình cụ thể của env, gói này có thể được thêm vào quy trình xây dựng CI/CD để tạo tệp cấu hình có các giá trị dành riêng cho env cụ thể mà không cần chỉ định thông tin xác thực Prod của bạn ở bất kỳ đâu ngoại trừ quy trình xây dựng của bạn.
Ngoài ra, việc đọc các giá trị này không yêu cầu quá trình không đồng bộ, điều này sẽ làm giảm thời gian khởi động ứng dụng của bạn.
Rõ ràng, gói này không làm ẩn giấu hoặc mã hóa các giá trị cấu hình, nhưng tệp Dart được tạo sẽ được xây dựng và làm ẩn giấu cùng với phần còn lại của mã nguồn ứng dụng di động của bạn. Nếu bạn muốn bảo vệ thông tin nhạy cảm, bạn có thể sử dụng các giá trị đã mã hóa và khóa mẫu để bọc chúng với thư viện giải mã của bạn. Nhưng tổng thể, hãy nhớ rằng không có cách nào để đảm bảo an toàn hoàn toàn cho ứng dụng của bạn khỏi quá trình phân tích ngược mã nguồn.
Hướng dẫn cài đặt môi trường:
Cài đặt package vào dependency:
dependencies:
flutter:
sdk: flutter
environment_config: ^3.1.0
Hoặc sử dụng lệnh này trên terminal
flutter pub add environment_config
Tiếp theo hãy tạo file environment_config.yaml ở thư mục root hoặc update file package.yaml của dự án
Cách 1: environment_config.yaml
environment_config:
class: EnvironmentConfig # class name
fields: # set of fields for command
baseUrl: # key name
type: String
default: 'http://api.github.com'
Cách 2: Update file package.yaml
name: env_flutter
description: "A new Flutter project."
publish_to: 'none'
version: 1.0.0+1
environment:
sdk: '>=3.3.0-91.0.dev <4.0.0'
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
environment_config: ^3.1.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.0
flutter:
uses-material-design: true
// Update code tại đây
environment_config:
class: EnvironmentConfig # class name
fields: # set of fields for command
baseUrl: # key name
type: String
default: 'http://api.github.com'
Tiếp theo chúng ta chạy lên generate các biến môi trường:
flutter pub run environment_config:generate
Lệnh này với tệp tạo, đã được chỉ định trong khóa đường dẫn với lớp, trường và tên được chỉ định trong cấu hình yaml.
Lưu ý: Bạn nên thêm các tệp cấu hình đã tạo vào .gitignore
Kết quả đạt được:
class EnvironmentConfig {
static const String baseUrl = 'http://api.github.com';
}
EnvironmentConfig: Là tên class mà chúng ta đã định nghĩa ở field class trong file environment_config.yaml
baseUrl: Là tên biến môi trường
‘http://api.github.com’: Chính là giá trị mặt định ban đầu chúng ta đã gán cho baseUrl
Cấu hình cho Class
path
– đường dẫn đến tệp tin trong thư mục lib
, mặc định là environment_config.dart
dotenv_path
– đường dẫn đến tệp tin trong thư mục gốc của ứng dụng, mặc định là .env
class
– tên lớp, mặc định sẽ được tạo dựa trên tên tệp
const
– tùy chọn, xác định xem hàm tạo của lớp có nên được định nghĩa là const hay không.
imports
– mảng các import để thêm vào tệp cấu hình được tạo ra
fields
– bộ các trường cần được định nghĩa trong các tệp cấu hình
dev_extension
– xác định đuôi mở rộng nào sẽ được xem xét là đuôi mở rộng phát triển, nếu được chỉ định – giá trị này có thể được sử dụng trong quá trình chạy lệnh như một cờ bool
extensions
– bộ cấu hình có thể mở rộng cấu hình mặc định
Cấu hình cho Field
Để xác định các trường cho định nghĩa cấu hình, hãy cung cấp bộ khóa trong khóa fields
.
Cấu hình chấp nhận bất kỳ số lượng khóa trường nào. Phải chỉ định ít nhất một trường
Note: Không thể sử dụng khóa config
để định nghĩa trường. Nó được dành riêng bởi lệnh để xác định đường dẫn đến tệp YAML cấu hình tùy chỉnh.
Note: Nếu dev_extension
được xác định, giá trị của nó không thể được sử dụng làm tên trường.
Mỗi trường chấp nhận các tham số sau, mỗi tham số là tùy chọn:
type
– kiểu trường, mặc định là String
const
– nếu trường nên là const, mặc định là TRUE. Nếu là FALSE, modifier final sẽ được sử dụng thay vào đó
static
– nếu trường nên là static, mặc định là TRUE. Nếu là FALSE, tùy chọn const sẽ bị bỏ qua
pattern
– mẫu cho giá trị trường. Bên trong giá trị cho trường này, VALUE có thể được sử dụng. Nó sẽ được thay thế bằng giá trị thực tế đã nhập hoặc giá trị mặc định
default
– giá trị mặc định cho trường. Nếu không được chỉ định, trường sẽ được coi là bắt buộc
short_name
– tên ngắn, có thể được sử dụng trong quá trình chạy lệnh thay vì tên trường đầy đủ. Chỉ chấp nhận giá trị 1 ký tự
dotenv
– cờ bool, nếu TRUE, trường này sẽ được thêm vào tệp .env
env_var
– tên biến toàn cục của môi trường
config_field
– mặc định là TRUE, cho biết liệu trường này có nên được định nghĩa trong lớp cấu hình Dart hay không
Với các thông tin trên giờ đây bạn đã có thể tự cấu hình file môi trường riêng dành cho dự án của mình. Điều quan trọng xin nhắc lại NHỚ IGNORE FILE MÔI TRƯỜNG ^^
PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG ĐA NỀN TẢNG (CROSS-PLATFORM MOBILE DEVELOPMENT)