|
@@ -33,33 +33,45 @@ class TerminalImage {
|
|
|
|
|
|
/// 所有图片的入口
|
|
|
class ContentImage extends StatelessWidget implements FWidget {
|
|
|
- /// 图片类型
|
|
|
- final RemedicalFileDataTypeEnum fileDataType;
|
|
|
+ /// 图片参数
|
|
|
+ final RemedicalInfoDTO remedicalInfo;
|
|
|
|
|
|
/// 图片地址
|
|
|
final TerminalImage terminalImage;
|
|
|
|
|
|
- /// AI 良恶性
|
|
|
- final DiagnosisConclusionEnum? diagnosisConclusion;
|
|
|
-
|
|
|
/// 是否是测量页面
|
|
|
final bool? isMeasure;
|
|
|
|
|
|
/// 改变图片地址
|
|
|
final VoidCallback? onChangeImage;
|
|
|
|
|
|
+ /// AI 良恶性
|
|
|
+ late final DiagnosisConclusionEnum diagnosisConclusion =
|
|
|
+ remedicalInfo.diagnosisConclusion;
|
|
|
+
|
|
|
+ /// 图片类型
|
|
|
+ late final RemedicalFileDataTypeEnum fileDataType =
|
|
|
+ remedicalInfo.fileDataType;
|
|
|
+
|
|
|
/// AI测量的器官
|
|
|
- final List<DiagnosisOrganEnum>? diagnosisOrgans;
|
|
|
+ late final List<DiagnosisOrganEnum>? diagnosisOrgans =
|
|
|
+ remedicalInfo.diagnosisOrgans;
|
|
|
|
|
|
/// 判断是否有AI器官
|
|
|
bool get hasDiagnosisOrgans => diagnosisOrgans?.length != 0;
|
|
|
|
|
|
+ /// 判断是否展示ai字
|
|
|
+ bool get isShowDiagnosisOrgans => [
|
|
|
+ DiagnosisConclusionEnum.NoObviousLesion,
|
|
|
+ DiagnosisConclusionEnum.Benign,
|
|
|
+ DiagnosisConclusionEnum.Malignant,
|
|
|
+ DiagnosisConclusionEnum.BenignAndMalignant
|
|
|
+ ].contains(diagnosisOrgans);
|
|
|
+
|
|
|
ContentImage({
|
|
|
Key? key,
|
|
|
- required this.fileDataType,
|
|
|
required this.terminalImage,
|
|
|
- this.diagnosisConclusion = DiagnosisConclusionEnum.NotRequired,
|
|
|
- this.diagnosisOrgans = const [DiagnosisOrganEnum.Null],
|
|
|
+ required this.remedicalInfo,
|
|
|
this.isMeasure = false,
|
|
|
this.onChangeImage,
|
|
|
}) : super(key: key);
|
|
@@ -124,7 +136,7 @@ class ContentImage extends StatelessWidget implements FWidget {
|
|
|
)
|
|
|
: const SizedBox(),
|
|
|
InkWell(
|
|
|
- onTap: () {
|
|
|
+ onDoubleTap: () {
|
|
|
onChangeImage!.call();
|
|
|
},
|
|
|
child: Center(
|
|
@@ -137,26 +149,28 @@ class ContentImage extends StatelessWidget implements FWidget {
|
|
|
),
|
|
|
),
|
|
|
),
|
|
|
- Positioned(
|
|
|
- bottom: 5,
|
|
|
- right: 5,
|
|
|
- child: Tooltip(
|
|
|
- textStyle: TextStyle(
|
|
|
- fontSize: 16,
|
|
|
- color: Colors.white,
|
|
|
- ),
|
|
|
- message: _buildAIText(diagnosisConclusion!),
|
|
|
- child: Text(
|
|
|
- 'AI',
|
|
|
- style: TextStyle(
|
|
|
- color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ isShowDiagnosisOrgans
|
|
|
+ ? Positioned(
|
|
|
+ bottom: 5,
|
|
|
+ right: 5,
|
|
|
+ child: Tooltip(
|
|
|
+ textStyle: TextStyle(
|
|
|
+ fontSize: 16,
|
|
|
+ color: Colors.white,
|
|
|
+ ),
|
|
|
+ message: _buildAIText(diagnosisConclusion),
|
|
|
+ child: Text(
|
|
|
+ 'AI',
|
|
|
+ style: TextStyle(
|
|
|
+ color: _buildAITextColor(
|
|
|
+ diagnosisConclusion,
|
|
|
+ ),
|
|
|
+ fontSize: 20,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
),
|
|
|
- fontSize: 20,
|
|
|
- ),
|
|
|
- ),
|
|
|
- ),
|
|
|
- ),
|
|
|
+ )
|
|
|
+ : const SizedBox(),
|
|
|
],
|
|
|
),
|
|
|
),
|
|
@@ -168,7 +182,7 @@ class ContentImage extends StatelessWidget implements FWidget {
|
|
|
) {
|
|
|
return Listener(
|
|
|
child: InkWell(
|
|
|
- onTap: () {
|
|
|
+ onDoubleTap: () {
|
|
|
onChangeImage!.call();
|
|
|
},
|
|
|
child: Container(
|
|
@@ -194,26 +208,28 @@ class ContentImage extends StatelessWidget implements FWidget {
|
|
|
child: _buildAIDiagnosticOrgans(),
|
|
|
)
|
|
|
: const SizedBox(),
|
|
|
- Positioned(
|
|
|
- bottom: 5,
|
|
|
- right: 5,
|
|
|
- child: Tooltip(
|
|
|
- textStyle: TextStyle(
|
|
|
- fontSize: 16,
|
|
|
- color: Colors.white,
|
|
|
- ),
|
|
|
- message: _buildAIText(diagnosisConclusion!),
|
|
|
- child: Text(
|
|
|
- 'AI',
|
|
|
- style: TextStyle(
|
|
|
- color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ isShowDiagnosisOrgans
|
|
|
+ ? Positioned(
|
|
|
+ bottom: 5,
|
|
|
+ right: 5,
|
|
|
+ child: Tooltip(
|
|
|
+ textStyle: TextStyle(
|
|
|
+ fontSize: 16,
|
|
|
+ color: Colors.white,
|
|
|
+ ),
|
|
|
+ message: _buildAIText(diagnosisConclusion),
|
|
|
+ child: Text(
|
|
|
+ 'AI',
|
|
|
+ style: TextStyle(
|
|
|
+ color: _buildAITextColor(
|
|
|
+ diagnosisConclusion,
|
|
|
+ ),
|
|
|
+ fontSize: 20,
|
|
|
+ ),
|
|
|
+ ),
|
|
|
),
|
|
|
- fontSize: 20,
|
|
|
- ),
|
|
|
- ),
|
|
|
- ),
|
|
|
- ),
|
|
|
+ )
|
|
|
+ : const SizedBox(),
|
|
|
],
|
|
|
),
|
|
|
),
|
|
@@ -267,14 +283,14 @@ class ContentImage extends StatelessWidget implements FWidget {
|
|
|
return FIcon(
|
|
|
FIcons.fis_breast,
|
|
|
color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ diagnosisConclusion,
|
|
|
),
|
|
|
);
|
|
|
case DiagnosisOrganEnum.Abdomen:
|
|
|
return FIcon(
|
|
|
FIcons.fis_abdomen,
|
|
|
color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ diagnosisConclusion,
|
|
|
),
|
|
|
);
|
|
|
|
|
@@ -282,28 +298,28 @@ class ContentImage extends StatelessWidget implements FWidget {
|
|
|
return FIcon(
|
|
|
FIcons.fis_liver,
|
|
|
color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ diagnosisConclusion,
|
|
|
),
|
|
|
);
|
|
|
case DiagnosisOrganEnum.Cholecyst:
|
|
|
return FIcon(
|
|
|
FIcons.fis_gallbladder,
|
|
|
color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ diagnosisConclusion,
|
|
|
),
|
|
|
);
|
|
|
case DiagnosisOrganEnum.Kidney:
|
|
|
return FIcon(
|
|
|
FIcons.fis_kidney,
|
|
|
color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ diagnosisConclusion,
|
|
|
),
|
|
|
);
|
|
|
case DiagnosisOrganEnum.Spleen:
|
|
|
return FIcon(
|
|
|
FIcons.fis_spleen,
|
|
|
color: _buildAITextColor(
|
|
|
- diagnosisConclusion!,
|
|
|
+ diagnosisConclusion,
|
|
|
),
|
|
|
);
|
|
|
|