flutter如何判断dio的开发环境和生产环境

在Flutter项目中,如何通过Dio区分开发环境和生产环境?我想在请求时根据不同的环境配置不同的baseUrl和其他参数,但不知道如何正确判断当前是开发环境还是生产环境。有没有比较优雅的实现方式?最好能兼顾调试和打包后的场景。

2 回复

使用BaseOptions的baseUrl区分环境:

BaseOptions options = BaseOptions(
  baseUrl: isProduction ? '生产环境URL' : '开发环境URL'
);
Dio dio = Dio(options);

通过全局变量isProduction控制,可在main.dart中根据编译模式设置。

更多关于flutter如何判断dio的开发环境和生产环境的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,你可以通过以下方法判断 Dio 的开发环境和生产环境:

1. 使用 kReleaseMode 常量

import 'package:flutter/foundation.dart';

if (kReleaseMode) {
  // 生产环境
  dio.options.baseUrl = 'https://api.production.com';
} else {
  // 开发环境
  dio.options.baseUrl = 'https://api.development.com';
}

2. 使用 kDebugMode 常量

import 'package:flutter/foundation.dart';

if (kDebugMode) {
  // 开发环境
  dio.options.baseUrl = 'https://api.development.com';
} else {
  // 生产环境
  dio.options.baseUrl = 'https://api.production.com';
}

3. 使用环境变量(推荐)

main.dart 中配置:

import 'package:flutter/foundation.dart';

void main() {
  const bool isProduction = kReleaseMode;
  
  Dio dio = Dio();
  dio.options.baseUrl = isProduction 
      ? 'https://api.production.com'
      : 'https://api.development.com';
      
  runApp(MyApp(dio: dio));
}

4. 配置不同的 Base URL

class ApiConfig {
  static const String devBaseUrl = 'https://dev.api.com';
  static const String prodBaseUrl = 'https://api.com';
  
  static String get baseUrl => kReleaseMode ? prodBaseUrl : devBaseUrl;
}

// 使用
dio.options.baseUrl = ApiConfig.baseUrl;

5. 使用 Flavors(多环境配置)

android/app/build.gradle 和 iOS 项目中配置不同环境,然后通过 Dart 定义获取:

const bool isProduction = bool.fromEnvironment('dart.vm.product');

建议:

  • 简单项目使用 kReleaseModekDebugMode
  • 复杂项目建议使用 Flavors 配置多环境
  • 可以在应用启动时就配置好 Dio 的基础 URL,避免每次请求都进行判断

这样就能根据不同的运行环境自动切换 API 地址了。

回到顶部