Quản lý cấu hình cho Flutter với Environment Config

PH Dong

Quản lý cấu hình cho Flutter

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.

Quản lý cấu hình cho Flutter
Quản lý cấu hình cho Flutter

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)

Viết một bình luận