1. 升级依赖版本
2. 解决运行项目警告日志问题 3. 优化代码
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
id("kotlin-android")
|
// The Flutter Gradle Plugin must be applied after the Android Gradle plugin.
|
||||||
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
|
|
||||||
id("dev.flutter.flutter-gradle-plugin")
|
id("dev.flutter.flutter-gradle-plugin")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,10 +16,6 @@ android {
|
|||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = JavaVersion.VERSION_11.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = appPackageName
|
applicationId = appPackageName
|
||||||
// You can update the following values to match your application needs.
|
// You can update the following values to match your application needs.
|
||||||
@@ -40,6 +35,12 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
val cameraxVersion = "1.4.1"
|
val cameraxVersion = "1.4.1"
|
||||||
implementation("androidx.camera:camera-core:$cameraxVersion")
|
implementation("androidx.camera:camera-core:$cameraxVersion")
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.gdfw.fxjk
|
|||||||
|
|
||||||
object AppConstants {
|
object AppConstants {
|
||||||
const val PACKAGE_NAME = "com.gdfw.fxjk"
|
const val PACKAGE_NAME = "com.gdfw.fxjk"
|
||||||
|
const val PLATFORM_INFO_CHANNEL = "$PACKAGE_NAME/platform_info"
|
||||||
const val RECORDING_METHOD_CHANNEL = "$PACKAGE_NAME/recording"
|
const val RECORDING_METHOD_CHANNEL = "$PACKAGE_NAME/recording"
|
||||||
const val RECORDING_EVENT_CHANNEL = "$PACKAGE_NAME/recording_events"
|
const val RECORDING_EVENT_CHANNEL = "$PACKAGE_NAME/recording_events"
|
||||||
const val RECORDING_ACTION_START = "$PACKAGE_NAME.recording.START"
|
const val RECORDING_ACTION_START = "$PACKAGE_NAME.recording.START"
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
package com.gdfw.fxjk
|
package com.gdfw.fxjk
|
||||||
|
|
||||||
|
import android.content.pm.ApplicationInfo
|
||||||
|
import android.os.Build
|
||||||
import androidx.camera.view.PreviewView
|
import androidx.camera.view.PreviewView
|
||||||
import com.gdfw.fxjk.recording.RecordingPlatformHandler
|
import com.gdfw.fxjk.recording.RecordingPlatformHandler
|
||||||
import com.gdfw.fxjk.recording.RecordingPreviewFactory
|
import com.gdfw.fxjk.recording.RecordingPreviewFactory
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
import io.flutter.embedding.engine.FlutterEngine
|
import io.flutter.embedding.engine.FlutterEngine
|
||||||
|
import io.flutter.plugin.common.MethodChannel
|
||||||
|
|
||||||
class MainActivity : FlutterActivity() {
|
class MainActivity : FlutterActivity() {
|
||||||
private var platformHandler: RecordingPlatformHandler? = null
|
private var platformHandler: RecordingPlatformHandler? = null
|
||||||
|
private var platformInfoChannel: MethodChannel? = null
|
||||||
|
|
||||||
var recordingPreviewView: PreviewView? = null
|
var recordingPreviewView: PreviewView? = null
|
||||||
private set
|
private set
|
||||||
@@ -22,6 +26,20 @@ class MainActivity : FlutterActivity() {
|
|||||||
RecordingPreviewFactory(this),
|
RecordingPreviewFactory(this),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
platformInfoChannel =
|
||||||
|
MethodChannel(
|
||||||
|
flutterEngine.dartExecutor.binaryMessenger,
|
||||||
|
AppConstants.PLATFORM_INFO_CHANNEL,
|
||||||
|
).also { channel ->
|
||||||
|
channel.setMethodCallHandler { call, result ->
|
||||||
|
when (call.method) {
|
||||||
|
"packageInfo" -> result.success(packageInfoMap())
|
||||||
|
"deviceInfo" -> result.success(deviceInfoMap())
|
||||||
|
else -> result.notImplemented()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
platformHandler =
|
platformHandler =
|
||||||
RecordingPlatformHandler(
|
RecordingPlatformHandler(
|
||||||
this,
|
this,
|
||||||
@@ -40,8 +58,63 @@ class MainActivity : FlutterActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
platformInfoChannel?.setMethodCallHandler(null)
|
||||||
|
platformInfoChannel = null
|
||||||
platformHandler?.dispose()
|
platformHandler?.dispose()
|
||||||
platformHandler = null
|
platformHandler = null
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun packageInfoMap(): Map<String, String> {
|
||||||
|
val packageInfo =
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
packageManager.getPackageInfo(
|
||||||
|
packageName,
|
||||||
|
android.content.pm.PackageManager.PackageInfoFlags.of(0),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
packageManager.getPackageInfo(packageName, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
val appName =
|
||||||
|
applicationInfo.loadLabel(packageManager)?.toString().orEmpty()
|
||||||
|
val versionCode =
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
|
packageInfo.longVersionCode.toString()
|
||||||
|
} else {
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
packageInfo.versionCode.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapOf(
|
||||||
|
"appName" to appName,
|
||||||
|
"packageName" to packageName,
|
||||||
|
"version" to packageInfo.versionName.orEmpty(),
|
||||||
|
"buildNumber" to versionCode,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun deviceInfoMap(): Map<String, Any> {
|
||||||
|
val flags = applicationInfo.flags
|
||||||
|
val isEmulator =
|
||||||
|
Build.FINGERPRINT.startsWith("generic") ||
|
||||||
|
Build.FINGERPRINT.startsWith("unknown") ||
|
||||||
|
Build.MODEL.contains("google_sdk") ||
|
||||||
|
Build.MODEL.contains("Emulator") ||
|
||||||
|
Build.MODEL.contains("Android SDK built for x86") ||
|
||||||
|
Build.MANUFACTURER.contains("Genymotion") ||
|
||||||
|
Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic") ||
|
||||||
|
Build.PRODUCT == "google_sdk" ||
|
||||||
|
flags and ApplicationInfo.FLAG_DEBUGGABLE != 0 &&
|
||||||
|
Build.HARDWARE.contains("ranchu")
|
||||||
|
|
||||||
|
return mapOf(
|
||||||
|
"platform" to "android",
|
||||||
|
"brand" to Build.BRAND,
|
||||||
|
"model" to Build.MODEL,
|
||||||
|
"systemVersion" to Build.VERSION.RELEASE,
|
||||||
|
"isPhysicalDevice" to !isEmulator,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,5 +15,8 @@ import UIKit
|
|||||||
if let registrar = engineBridge.pluginRegistry.registrar(forPlugin: "RecordingPlugin") {
|
if let registrar = engineBridge.pluginRegistry.registrar(forPlugin: "RecordingPlugin") {
|
||||||
RecordingPlugin.register(with: registrar)
|
RecordingPlugin.register(with: registrar)
|
||||||
}
|
}
|
||||||
|
if let registrar = engineBridge.pluginRegistry.registrar(forPlugin: "PlatformInfoPlugin") {
|
||||||
|
PlatformInfoPlugin.register(with: registrar)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
71
ios/Runner/PlatformInfoPlugin.swift
Normal file
71
ios/Runner/PlatformInfoPlugin.swift
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
import Flutter
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
final class PlatformInfoPlugin: NSObject, FlutterPlugin {
|
||||||
|
static func register(with registrar: FlutterPluginRegistrar) {
|
||||||
|
let channel = FlutterMethodChannel(
|
||||||
|
name: "com.gdfw.fxjk/platform_info",
|
||||||
|
binaryMessenger: registrar.messenger()
|
||||||
|
)
|
||||||
|
let plugin = PlatformInfoPlugin()
|
||||||
|
registrar.addMethodCallDelegate(plugin, channel: channel)
|
||||||
|
}
|
||||||
|
|
||||||
|
func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
|
||||||
|
switch call.method {
|
||||||
|
case "packageInfo":
|
||||||
|
result(packageInfoMap())
|
||||||
|
case "deviceInfo":
|
||||||
|
result(deviceInfoMap())
|
||||||
|
default:
|
||||||
|
result(FlutterMethodNotImplemented)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func packageInfoMap() -> [String: String] {
|
||||||
|
let bundle = Bundle.main
|
||||||
|
return [
|
||||||
|
"appName": displayName(bundle: bundle),
|
||||||
|
"packageName": bundle.bundleIdentifier ?? "",
|
||||||
|
"version": bundle.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "",
|
||||||
|
"buildNumber": bundle.object(forInfoDictionaryKey: "CFBundleVersion") as? String ?? "",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
private func deviceInfoMap() -> [String: Any] {
|
||||||
|
let device = UIDevice.current
|
||||||
|
return [
|
||||||
|
"platform": "ios",
|
||||||
|
"brand": device.systemName,
|
||||||
|
"model": machineIdentifier(),
|
||||||
|
"systemVersion": device.systemVersion,
|
||||||
|
"isPhysicalDevice": !isSimulator(),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
private func displayName(bundle: Bundle) -> String {
|
||||||
|
if let displayName = bundle.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String {
|
||||||
|
return displayName
|
||||||
|
}
|
||||||
|
return bundle.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
|
||||||
|
}
|
||||||
|
|
||||||
|
private func isSimulator() -> Bool {
|
||||||
|
#if targetEnvironment(simulator)
|
||||||
|
return true
|
||||||
|
#else
|
||||||
|
return false
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
private func machineIdentifier() -> String {
|
||||||
|
var systemInfo = utsname()
|
||||||
|
uname(&systemInfo)
|
||||||
|
let mirror = Mirror(reflecting: systemInfo.machine)
|
||||||
|
let identifier = mirror.children.reduce(into: "") { value, element in
|
||||||
|
guard let byte = element.value as? Int8, byte != 0 else { return }
|
||||||
|
value.append(String(UnicodeScalar(UInt8(byte))))
|
||||||
|
}
|
||||||
|
return identifier
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import 'package:recording_tool/app/app.dart';
|
|||||||
import 'package:recording_tool/app/config/app_config.dart';
|
import 'package:recording_tool/app/config/app_config.dart';
|
||||||
import 'package:recording_tool/core/cache/app_storage.dart';
|
import 'package:recording_tool/core/cache/app_storage.dart';
|
||||||
import 'package:recording_tool/core/logging/app_logger.dart';
|
import 'package:recording_tool/core/logging/app_logger.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:recording_tool/core/platform/app_platform_info.dart';
|
||||||
|
|
||||||
class AppBootstrapper {
|
class AppBootstrapper {
|
||||||
AppBootstrapper._();
|
AppBootstrapper._();
|
||||||
@@ -18,7 +18,7 @@ class AppBootstrapper {
|
|||||||
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
|
|
||||||
await AppStorage.init();
|
await AppStorage.init();
|
||||||
final packageInfo = await PackageInfo.fromPlatform();
|
final packageInfo = await AppPlatformInfo.packageInfo();
|
||||||
|
|
||||||
AppConfig.configure(environment: environment, packageInfo: packageInfo);
|
AppConfig.configure(environment: environment, packageInfo: packageInfo);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:recording_tool/core/platform/app_platform_info.dart';
|
||||||
|
|
||||||
enum AppEnvironment { dev, staging, prod }
|
enum AppEnvironment { dev, staging, prod }
|
||||||
|
|
||||||
@@ -18,13 +18,13 @@ class AppConfig {
|
|||||||
AppConfig._();
|
AppConfig._();
|
||||||
|
|
||||||
static late EnvironmentValues current;
|
static late EnvironmentValues current;
|
||||||
static PackageInfo? packageInfo;
|
static AppPackageInfo? packageInfo;
|
||||||
|
|
||||||
static const appName = '飞行极控';
|
static const appName = '飞行极控';
|
||||||
|
|
||||||
static void configure({
|
static void configure({
|
||||||
required AppEnvironment environment,
|
required AppEnvironment environment,
|
||||||
PackageInfo? packageInfo,
|
AppPackageInfo? packageInfo,
|
||||||
}) {
|
}) {
|
||||||
AppConfig.packageInfo = packageInfo;
|
AppConfig.packageInfo = packageInfo;
|
||||||
current = switch (environment) {
|
current = switch (environment) {
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ class AppNavigator {
|
|||||||
barrierDismissible: dismissible,
|
barrierDismissible: dismissible,
|
||||||
transitionDuration: duration,
|
transitionDuration: duration,
|
||||||
reverseTransitionDuration: duration,
|
reverseTransitionDuration: duration,
|
||||||
pageBuilder: (_, __, ___) => page,
|
pageBuilder: (_, _, _) => page,
|
||||||
transitionsBuilder: (_, animation, __, child) {
|
transitionsBuilder: (_, animation, _, child) {
|
||||||
return FadeTransition(opacity: animation, child: child);
|
return FadeTransition(opacity: animation, child: child);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
78
lib/core/platform/app_platform_info.dart
Normal file
78
lib/core/platform/app_platform_info.dart
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
class AppPackageInfo {
|
||||||
|
const AppPackageInfo({
|
||||||
|
required this.appName,
|
||||||
|
required this.packageName,
|
||||||
|
required this.version,
|
||||||
|
required this.buildNumber,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory AppPackageInfo.fromMap(Map<Object?, Object?> map) {
|
||||||
|
return AppPackageInfo(
|
||||||
|
appName: map['appName'] as String? ?? '',
|
||||||
|
packageName: map['packageName'] as String? ?? '',
|
||||||
|
version: map['version'] as String? ?? '',
|
||||||
|
buildNumber: map['buildNumber'] as String? ?? '',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
final String appName;
|
||||||
|
final String packageName;
|
||||||
|
final String version;
|
||||||
|
final String buildNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AppDeviceInfo {
|
||||||
|
const AppDeviceInfo({
|
||||||
|
required this.platform,
|
||||||
|
required this.isPhysicalDevice,
|
||||||
|
required this.values,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory AppDeviceInfo.fromMap(Map<Object?, Object?> map) {
|
||||||
|
final values = <String, String>{};
|
||||||
|
for (final entry in map.entries) {
|
||||||
|
final key = entry.key;
|
||||||
|
final value = entry.value;
|
||||||
|
if (key is String && value != null) {
|
||||||
|
values[key] = value.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final isPhysicalDevice = map['isPhysicalDevice'];
|
||||||
|
return AppDeviceInfo(
|
||||||
|
platform: map['platform'] as String? ?? Platform.operatingSystem,
|
||||||
|
isPhysicalDevice: isPhysicalDevice is bool ? isPhysicalDevice : true,
|
||||||
|
values: values,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
final String platform;
|
||||||
|
final bool isPhysicalDevice;
|
||||||
|
final Map<String, String> values;
|
||||||
|
}
|
||||||
|
|
||||||
|
class AppPlatformInfo {
|
||||||
|
AppPlatformInfo._();
|
||||||
|
|
||||||
|
static const MethodChannel _channel = MethodChannel(
|
||||||
|
'com.gdfw.fxjk/platform_info',
|
||||||
|
);
|
||||||
|
|
||||||
|
static Future<AppPackageInfo> packageInfo() async {
|
||||||
|
final result = await _channel.invokeMapMethod<Object?, Object?>(
|
||||||
|
'packageInfo',
|
||||||
|
);
|
||||||
|
return AppPackageInfo.fromMap(result ?? const <Object?, Object?>{});
|
||||||
|
}
|
||||||
|
|
||||||
|
static Future<AppDeviceInfo> deviceInfo() async {
|
||||||
|
final result = await _channel.invokeMapMethod<Object?, Object?>(
|
||||||
|
'deviceInfo',
|
||||||
|
);
|
||||||
|
return AppDeviceInfo.fromMap(result ?? const <Object?, Object?>{});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:device_info_plus/device_info_plus.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:recording_tool/core/platform/app_platform_info.dart';
|
||||||
|
|
||||||
class DeviceUtils {
|
class DeviceUtils {
|
||||||
DeviceUtils._();
|
DeviceUtils._();
|
||||||
@@ -19,36 +19,13 @@ class DeviceUtils {
|
|||||||
MediaQuery.paddingOf(context).bottom;
|
MediaQuery.paddingOf(context).bottom;
|
||||||
|
|
||||||
static Future<bool> isPhysicalDevice() async {
|
static Future<bool> isPhysicalDevice() async {
|
||||||
final plugin = DeviceInfoPlugin();
|
return (await AppPlatformInfo.deviceInfo()).isPhysicalDevice;
|
||||||
if (Platform.isAndroid) {
|
|
||||||
return (await plugin.androidInfo).isPhysicalDevice;
|
|
||||||
}
|
|
||||||
if (Platform.isIOS) {
|
|
||||||
return (await plugin.iosInfo).isPhysicalDevice;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<Map<String, String>> deviceInfo() async {
|
static Future<Map<String, String>> deviceInfo() async {
|
||||||
final plugin = DeviceInfoPlugin();
|
if (!Platform.isAndroid && !Platform.isIOS) {
|
||||||
if (Platform.isAndroid) {
|
return {'platform': Platform.operatingSystem};
|
||||||
final info = await plugin.androidInfo;
|
|
||||||
return {
|
|
||||||
'platform': 'android',
|
|
||||||
'brand': info.brand,
|
|
||||||
'model': info.model,
|
|
||||||
'systemVersion': info.version.release,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
if (Platform.isIOS) {
|
return (await AppPlatformInfo.deviceInfo()).values;
|
||||||
final info = await plugin.iosInfo;
|
|
||||||
return {
|
|
||||||
'platform': 'ios',
|
|
||||||
'brand': info.systemName,
|
|
||||||
'model': info.utsname.machine,
|
|
||||||
'systemVersion': info.systemVersion,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {'platform': Platform.operatingSystem};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,13 +86,17 @@ class RecordingPlatform {
|
|||||||
bool enableDoNotDisturb = true,
|
bool enableDoNotDisturb = true,
|
||||||
String? displayName,
|
String? displayName,
|
||||||
}) async {
|
}) async {
|
||||||
|
final args = <String, dynamic>{
|
||||||
|
'withAudio': withAudio,
|
||||||
|
'enableDoNotDisturb': enableDoNotDisturb,
|
||||||
|
};
|
||||||
|
if (displayName != null) {
|
||||||
|
args['displayName'] = displayName;
|
||||||
|
}
|
||||||
|
|
||||||
final result = await _channel.invokeMapMethod<String, dynamic>(
|
final result = await _channel.invokeMapMethod<String, dynamic>(
|
||||||
'startRecording',
|
'startRecording',
|
||||||
<String, dynamic>{
|
args,
|
||||||
'withAudio': withAudio,
|
|
||||||
'enableDoNotDisturb': enableDoNotDisturb,
|
|
||||||
if (displayName != null) 'displayName': displayName,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
return RecordingStartResult(
|
return RecordingStartResult(
|
||||||
outputPath: result?['outputPath'] as String?,
|
outputPath: result?['outputPath'] as String?,
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ class AppNetworkImage extends StatelessWidget {
|
|||||||
width: width,
|
width: width,
|
||||||
height: height,
|
height: height,
|
||||||
fit: fit,
|
fit: fit,
|
||||||
placeholder: (_, __) => ColoredBox(
|
placeholder: (_, _) => ColoredBox(
|
||||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||||
child: const Center(
|
child: const Center(
|
||||||
child: SizedBox.square(
|
child: SizedBox.square(
|
||||||
@@ -33,7 +33,7 @@ class AppNetworkImage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
errorWidget: (_, __, ___) => ColoredBox(
|
errorWidget: (_, _, _) => ColoredBox(
|
||||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.image_not_supported_outlined,
|
Icons.image_not_supported_outlined,
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ class _AppRefreshListState<T> extends State<AppRefreshList<T>> {
|
|||||||
: ListView.separated(
|
: ListView.separated(
|
||||||
padding: widget.padding,
|
padding: widget.padding,
|
||||||
itemCount: widget.items.length,
|
itemCount: widget.items.length,
|
||||||
separatorBuilder: (_, __) =>
|
separatorBuilder: (_, _) =>
|
||||||
widget.separator ?? const SizedBox(height: 8),
|
widget.separator ?? const SizedBox(height: 8),
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
return widget.itemBuilder(context, widget.items[index], index);
|
return widget.itemBuilder(context, widget.items[index], index);
|
||||||
|
|||||||
184
pubspec.lock
184
pubspec.lock
@@ -89,6 +89,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "1.1.2"
|
||||||
|
code_assets:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: code_assets
|
||||||
|
sha256: bf394f466ba9205f1812a0433b392d6af280f155f56651eda7c18cc32ed493b8
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.2.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -149,26 +157,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: dbus
|
name: dbus
|
||||||
sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270
|
sha256: "792974a4007974fbc5c1b5433eb2330a9db3e368c3f906253af4c007d0f49a91"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.12"
|
version: "0.7.13"
|
||||||
device_info_plus:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: device_info_plus
|
|
||||||
sha256: b4fed1b2835da9d670d7bed7db79ae2a94b0f5ad6312268158a9b5479abbacdd
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "12.4.0"
|
|
||||||
device_info_plus_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: device_info_plus_platform_interface
|
|
||||||
sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "7.0.3"
|
|
||||||
dio:
|
dio:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -242,10 +234,10 @@ packages:
|
|||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
|
sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.0"
|
version: "6.0.0"
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -279,10 +271,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_svg
|
name: flutter_svg
|
||||||
sha256: "1ded017b39c8e15c8948ea855070a5ff8ff8b3d5e83f3446e02d6bb12add7ad9"
|
sha256: "35882981abcbfb8c15b286f0cd690ff25bac12d95eff3e25ee207f37d4c42e7f"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.4"
|
version: "2.3.0"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -309,6 +301,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.1.3"
|
||||||
|
hooks:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: hooks
|
||||||
|
sha256: "9a62a50b50b769a737bc0a8ff381f333529df3ab746b2f6b02e83760231455ba"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.2"
|
||||||
http:
|
http:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -349,6 +349,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.5"
|
version: "1.0.5"
|
||||||
|
jni:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: jni
|
||||||
|
sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
|
jni_flutter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: jni_flutter
|
||||||
|
sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
leak_tracker:
|
leak_tracker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -377,10 +393,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: lints
|
name: lints
|
||||||
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
|
sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.1.1"
|
version: "6.1.0"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -437,6 +453,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "2.0.2"
|
||||||
|
objective_c:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: objective_c
|
||||||
|
sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "9.4.1"
|
||||||
octo_image:
|
octo_image:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -453,22 +477,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.2.0"
|
||||||
package_info_plus:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: package_info_plus
|
|
||||||
sha256: "468c26b4254ab01979fa5e4a98cb343ea3631b9acee6f21028997419a80e1a20"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "9.0.1"
|
|
||||||
package_info_plus_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: package_info_plus_platform_interface
|
|
||||||
sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.2.1"
|
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -497,18 +505,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_android
|
name: path_provider_android
|
||||||
sha256: "149441ca6e4f38193b2e004c0ca6376a3d11f51fa5a77552d8bd4d2b0c0912ba"
|
sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.23"
|
version: "2.3.1"
|
||||||
path_provider_foundation:
|
path_provider_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path_provider_foundation
|
name: path_provider_foundation
|
||||||
sha256: "6d13aece7b3f5c5a9731eaf553ff9dcbc2eff41087fd2df587fd0fed9a3eb0c4"
|
sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.1"
|
version: "2.6.0"
|
||||||
path_provider_linux:
|
path_provider_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -537,10 +545,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: permission_handler
|
name: permission_handler
|
||||||
sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1
|
sha256: fe54465bcc62a4564c6e4db337bbaded6c0c0fa6e10487414436d163114784f6
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "12.0.1"
|
version: "12.0.3"
|
||||||
permission_handler_android:
|
permission_handler_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -553,10 +561,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_apple
|
name: permission_handler_apple
|
||||||
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
|
sha256: e20daf680eef1ca62ffe8c8c526b778cc386d50137c77ac71c8ec9c88c13fb9d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "9.4.7"
|
version: "9.4.9"
|
||||||
permission_handler_html:
|
permission_handler_html:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -629,6 +637,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.0"
|
||||||
|
record_use:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: record_use
|
||||||
|
sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.6.0"
|
||||||
riverpod:
|
riverpod:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -657,10 +673,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_android
|
name: shared_preferences_android
|
||||||
sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53
|
sha256: a2c49fc1fed7140cadd892d765bd47edbe4ac0b9c7e7e3c493dcb58126f99cf0
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.23"
|
version: "2.4.25"
|
||||||
shared_preferences_foundation:
|
shared_preferences_foundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -766,42 +782,42 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03
|
sha256: "58a799e6ac17dd32fbab93813d39ed835a75ccc0f8f85b8955fe318c6712b082"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2"
|
version: "2.4.3"
|
||||||
sqflite_android:
|
sqflite_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_android
|
name: sqflite_android
|
||||||
sha256: ecd684501ebc2ae9a83536e8b15731642b9570dc8623e0073d227d0ee2bfea88
|
sha256: d0548f9d7422a2dae99ec6f8b0a3074463b132d216fa5ba0d230eeefc901983b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2+2"
|
version: "2.4.3"
|
||||||
sqflite_common:
|
sqflite_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
sha256: "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6"
|
sha256: cce558075afe2a83f3fd7fc123acd6b090683e4f23910d44fbb31ecd7800b014
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.5.6"
|
version: "2.5.9"
|
||||||
sqflite_darwin:
|
sqflite_darwin:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_darwin
|
name: sqflite_darwin
|
||||||
sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
|
sha256: "164a5d73ab87a134566057219988bafde837029a64264e61f1f04376ef3cfcd2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.2"
|
version: "2.4.3"
|
||||||
sqflite_platform_interface:
|
sqflite_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_platform_interface
|
name: sqflite_platform_interface
|
||||||
sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920"
|
sha256: f84939f84350d92d04416f8bc4dc52d3896aec7716cc9e80cf0146342139dc50
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.4.1"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -838,10 +854,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: synchronized
|
name: synchronized
|
||||||
sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0
|
sha256: "93b153dcb6a26dcddee6ca087dd634b53e38c10b5aa163e8e49501a776456153"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.4.0"
|
version: "3.4.1"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -894,18 +910,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_android
|
name: url_launcher_android
|
||||||
sha256: "3bb000251e55d4a209aa0e2e563309dc9bb2befea2295fd0cec1f51760aac572"
|
sha256: b413d49b73867ac08dd2f9890efd3cc11f2a0e577618d50843440a1fb3776c32
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.29"
|
version: "6.3.32"
|
||||||
url_launcher_ios:
|
url_launcher_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_ios
|
name: url_launcher_ios
|
||||||
sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad
|
sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.3.6"
|
version: "6.4.1"
|
||||||
url_launcher_linux:
|
url_launcher_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -934,10 +950,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: url_launcher_web
|
name: url_launcher_web
|
||||||
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
|
sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.1"
|
version: "2.4.3"
|
||||||
url_launcher_windows:
|
url_launcher_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -958,10 +974,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_graphics
|
name: vector_graphics
|
||||||
sha256: "6409a25046024f0f8c5d8a59fec314081e81f9d436b66ca4015a8b49772bf445"
|
sha256: "2306c03da2ba81724afeb589c351ebbc0aa7d86005925be8f8735856dbe5e42d"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.2"
|
||||||
vector_graphics_codec:
|
vector_graphics_codec:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -974,10 +990,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_graphics_compiler
|
name: vector_graphics_compiler
|
||||||
sha256: "5a88dd14c0954a5398af544651c7fb51b457a2a556949bfb25369b210ef73a74"
|
sha256: "7ee12e6dffe0fc8e755179d6d91b3b34f5924223fc104d85572ef9180d73d172"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.5"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1034,22 +1050,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
win32:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: win32
|
|
||||||
sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "5.15.0"
|
|
||||||
win32_registry:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: win32_registry
|
|
||||||
sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.0"
|
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1062,10 +1062,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: xml
|
name: xml
|
||||||
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
|
sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.6.1"
|
version: "7.0.1"
|
||||||
yaml:
|
yaml:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1075,5 +1075,5 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.1.3"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.10.0-0 <4.0.0"
|
dart: ">=3.12.0 <4.0.0"
|
||||||
flutter: ">=3.35.0"
|
flutter: ">=3.44.0"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
|||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 1.0.0+1
|
version: 1.0.0+2002
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.9.0
|
sdk: ^3.9.0
|
||||||
@@ -36,14 +36,12 @@ dependencies:
|
|||||||
cached_network_image: ^3.4.1
|
cached_network_image: ^3.4.1
|
||||||
connectivity_plus: ^7.1.1
|
connectivity_plus: ^7.1.1
|
||||||
cupertino_icons: ^1.0.8
|
cupertino_icons: ^1.0.8
|
||||||
device_info_plus: ^12.4.0
|
|
||||||
dio: ^5.9.2
|
dio: ^5.9.2
|
||||||
flutter_easyloading: ^3.0.5
|
flutter_easyloading: ^3.0.5
|
||||||
flutter_riverpod: ^3.3.1
|
flutter_riverpod: ^3.3.1
|
||||||
flutter_screenutil: ^5.9.3
|
flutter_screenutil: ^5.9.3
|
||||||
flutter_svg: ^2.2.4
|
flutter_svg: ^2.2.4
|
||||||
intl: ^0.20.2
|
intl: ^0.20.2
|
||||||
package_info_plus: ^9.0.1
|
|
||||||
permission_handler: ^12.0.1
|
permission_handler: ^12.0.1
|
||||||
pull_to_refresh: ^2.0.0
|
pull_to_refresh: ^2.0.0
|
||||||
shared_preferences: ^2.5.5
|
shared_preferences: ^2.5.5
|
||||||
@@ -59,7 +57,7 @@ dev_dependencies:
|
|||||||
# activated in the `analysis_options.yaml` file located at the root of your
|
# activated in the `analysis_options.yaml` file located at the root of your
|
||||||
# package. See that file for information about deactivating specific lint
|
# package. See that file for information about deactivating specific lint
|
||||||
# rules and activating additional ones.
|
# rules and activating additional ones.
|
||||||
flutter_lints: ^5.0.0
|
flutter_lints: ^6.0.0
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|||||||
Reference in New Issue
Block a user