import 'package:package_info_plus/package_info_plus.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:uuid/uuid.dart';
import 'package:flutter/foundation.dart';
import 'dart:io';
import 'dart:math';
// 定义常见浏览器引擎
final List<String> commonBrowserEngines = [
'AppleWebKit',
'Gecko',
];
Future<String> getUserAgent() async {
final PackageInfo packageInfo = await PackageInfo.fromPlatform();
final String appName = packageInfo.appName;
final String appVersion = packageInfo.version;
final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
String platformName = '';
String platformVersion = '';
String deviceData = '';
String browserName = '';
String browserVersion = '';
String browserEngine = '';
if (kIsWeb) {
platformName = 'Web';
platformVersion = 'Unknown';
deviceData = 'Unknown';
browserEngine = 'AppleWebKit'; // Default for web
browserName = 'CustomBrowser';
browserVersion = appVersion;
} else if (Platform.isAndroid) {
final AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
platformName = 'Android';
platformVersion = androidInfo.version.release;
deviceData = androidInfo.model;
browserEngine = 'AppleWebKit';
browserName = 'Chrome'; // Default for Android
browserVersion = 'Mobile Safari/${appVersion}';
} else if (Platform.isIOS) {
final IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo;
platformName = 'iOS';
platformVersion = iosInfo.systemVersion;
deviceData = iosInfo.utsname.machine;
browserEngine = 'AppleWebKit';
browserName = 'Safari'; // Default for iOS
browserVersion = 'Version/${appVersion}';
} else if (Platform.isMacOS) {
final MacOsDeviceInfo macOsInfo = await deviceInfoPlugin.macOsInfo;
platformName = 'macOS';
platformVersion = macOsInfo.osRelease;
deviceData = macOsInfo.model;
browserEngine = 'AppleWebKit';
browserName = 'Safari'; // Default for macOS
browserVersion = 'Version/${appVersion}';
} else {
// Handle other platforms as needed
}
final String flutterVersion = await getFlutterVersion();
return '$appName/$appVersion ($platformName $platformVersion; $deviceData) $browserEngine $browserName/$browserVersion Flutter/$flutterVersion';
}
Future<String> getFlutterVersion() async {
return Platform.version.split(" ")[0];
}
生成效果: user-agent: [todoList_flutter/1.0.0 (Android 14; sdk_gphone64_x86_64) AppleWebKit Chrome/Mobile Safari/1.0.0 Flutter/3.4.0]