This commit is contained in:
tao
2025-09-01 09:23:42 +08:00
parent 0af8d30cae
commit 00a81e4e7b
5 changed files with 63 additions and 49 deletions

View File

@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:derma_flutter/router/config/route_paths.dart'; import 'package:derma_flutter/router/config/route_paths.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
@@ -26,9 +27,13 @@ class _HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin
///打开相机拍照 ///打开相机拍照
void _handTakePhoto() async { void _handTakePhoto() async {
var photo = await _picker.pickImage(source: ImageSource.camera); try {
if (photo != null) { var photo = await _picker.pickImage(source: ImageSource.camera);
_startDetect(photo.path); if (photo != null) {
_startDetect(photo.path);
}
} on PlatformException catch (e) {
EasyLoading.showToast(e.message ?? "");
} }
} }
@@ -46,7 +51,7 @@ class _HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin
///开始检测 ///开始检测
void _startDetect(String path) async { void _startDetect(String path) async {
//压缩 //压缩
final result = await FlutterImageCompress.compressWithFile( final result = await FlutterImageCompress.compressWithFile(
path, path,
minWidth: 1080, minWidth: 1080,
minHeight: 1920, minHeight: 1920,

View File

@@ -23,16 +23,20 @@ class _ItemWidgetState extends State<ItemWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var color = Colors.black; var color = Colors.black;
var statusText = "";
switch (widget.data.skinStatus) { switch (widget.data.skinStatus) {
case 1: case 1:
color = Theme.of(context).colorScheme.success; color = Theme.of(context).colorScheme.success;
statusText = "healthy";
break; break;
case 2: case 2:
color = Theme.of(context).colorScheme.warning; color = Theme.of(context).colorScheme.warning;
statusText = "issues";
break; break;
case 3: case 3:
color = Theme.of(context).colorScheme.error; color = Theme.of(context).colorScheme.error;
statusText = "error";
break; break;
default: default:
color = Colors.black; color = Colors.black;
@@ -90,7 +94,7 @@ class _ItemWidgetState extends State<ItemWidget> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
"healthy", statusText,
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, color: color), style: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, color: color),
), ),
Container( Container(

View File

@@ -32,33 +32,38 @@ class AgreementBox extends StatelessWidget {
), ),
), ),
), ),
RichText( GestureDetector(
text: TextSpan( onTap: () {
style: Theme.of(context).textTheme.labelSmall, onChanged(!checked);
children: [ },
TextSpan( child: RichText(
text: "I agree to the ", text: TextSpan(
), style: Theme.of(context).textTheme.labelSmall,
TextSpan( children: [
text: "Terms", TextSpan(
style: TextStyle(color: Theme.of(context).primaryColor), text: "I agree to the ",
recognizer: TapGestureRecognizer() ),
..onTap = () => context.push( TextSpan(
RoutePaths.agreement, text: "Terms",
extra: {"title": "Terms of Service", "url": "https://support.curain.ai/privacy/derma/terms_service.html"}, style: TextStyle(color: Theme.of(context).primaryColor),
), recognizer: TapGestureRecognizer()
), ..onTap = () => context.push(
TextSpan(text: " & "), RoutePaths.agreement,
TextSpan( extra: {"title": "Terms of Service", "url": "https://support.curain.ai/privacy/derma/terms_service.html"},
text: "Privacy Policy", ),
style: TextStyle(color: Theme.of(context).primaryColor), ),
recognizer: TapGestureRecognizer() TextSpan(text: " & "),
..onTap = () => context.push( TextSpan(
RoutePaths.agreement, text: "Privacy Policy",
extra: {"title": "Privacy", "url": "https://support.curain.ai/privacy/derma/privacy_policy.html"}, style: TextStyle(color: Theme.of(context).primaryColor),
), recognizer: TapGestureRecognizer()
), ..onTap = () => context.push(
], RoutePaths.agreement,
extra: {"title": "Privacy", "url": "https://support.curain.ai/privacy/derma/privacy_policy.html"},
),
),
],
),
), ),
), ),
], ],

View File

@@ -234,10 +234,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: "6382ce712ff69b0f719640ce957559dde459e55ecd433c767e06d139ddf16cab" sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.29" version: "2.0.30"
flutter_screenutil: flutter_screenutil:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -268,10 +268,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: go_router name: go_router
sha256: "8b1f37dfaf6e958c6b872322db06f946509433bec3de753c3491a42ae9ec2b48" sha256: eb059dfe59f08546e9787f895bd01652076f996bcbf485a8609ef990419ad227
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "16.1.0" version: "16.2.1"
google_identity_services_web: google_identity_services_web:
dependency: transitive dependency: transitive
description: description:
@@ -292,10 +292,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: google_sign_in_android name: google_sign_in_android
sha256: f256b8f0e6c09d135c166fe20b25256e24d60fe1a72e6bdc112a200bd0d555b4 sha256: "666c3a133f5ec4256f08884359dc34788778d96a378d804203bc57a73ffbd9c0"
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "7.0.3" version: "7.0.5"
google_sign_in_ios: google_sign_in_ios:
dependency: transitive dependency: transitive
description: description:
@@ -356,10 +356,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: image_picker_android name: image_picker_android
sha256: e83b2b05141469c5e19d77e1dfa11096b6b1567d09065b2265d7c6904560050c sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e"
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.8.13" version: "0.8.13+1"
image_picker_for_web: image_picker_for_web:
dependency: transitive dependency: transitive
description: description:
@@ -572,10 +572,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: provider name: provider
sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272"
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.1.5" version: "6.1.5+1"
remixicon: remixicon:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -604,10 +604,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "5bcf0772a761b04f8c6bf814721713de6f3e5d9d89caf8d3fe031b02a342379e" sha256: a2608114b1ffdcbc9c120eb71a0e207c71da56202852d4aab8a5e30a82269e74
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.4.11" version: "2.4.12"
shared_preferences_foundation: shared_preferences_foundation:
dependency: transitive dependency: transitive
description: description:
@@ -753,10 +753,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
sha256: "0aedad096a85b49df2e4725fa32118f9fa580f3b14af7a2d2221896a02cd5656" sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7"
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.3.17" version: "6.3.18"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
@@ -849,10 +849,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_android name: webview_flutter_android
sha256: "0a42444056b24ed832bdf3442d65c5194f6416f7e782152384944053c2ecc9a3" sha256: "9a25f6b4313978ba1c2cda03a242eea17848174912cfb4d2d8ee84a556f248e3"
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.10.0" version: "4.10.1"
webview_flutter_platform_interface: webview_flutter_platform_interface:
dependency: transitive dependency: transitive
description: description:

View File

@@ -2,7 +2,7 @@ name: derma_flutter
description: "A new Flutter project." description: "A new Flutter project."
publish_to: 'none' # Remove this line if you wish to publish to pub.dev publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1 version: 1.0.1
environment: environment:
sdk: ^3.8.1 sdk: ^3.8.1