123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- import 'package:fis_i18n/i18n.dart';
- import 'package:fis_measure/interfaces/process/player/play_controller.dart';
- import 'package:fis_measure/interfaces/process/workspace/application.dart';
- import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
- import 'package:fis_measure/process/workspace/measure_controller.dart';
- import 'package:fis_measure/process/workspace/measure_data_controller.dart';
- import 'package:fis_measure/process/workspace/measure_handler.dart';
- import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
- import 'package:fis_measure/view/measure/measure_config/widgets/measure_configuration_style.dart';
- import 'package:fis_measure/view/player/controller.dart';
- import 'package:fis_theme/theme.dart';
- import 'package:fis_ui/index.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- class MeasureSelectModel {
- MeasureSelectModel({required this.name, required this.code});
- final String name;
- final String code;
- }
- enum TagEnum {
- MeasureTool,
- NodesTool,
- }
- class LeftSiderHold extends StatelessWidget implements FWidget {
- const LeftSiderHold({Key? key, this.ifHideConfig = false}) : super(key: key);
- final bool ifHideConfig;
- @override
- FWidget build(BuildContext context) {
- return FContainer(
- width: 300,
- padding: const EdgeInsets.symmetric(
- horizontal: 10,
- vertical: 15,
- ),
- child: FColumn(
-
- mainAxisSize: MainAxisSize.max,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- FRow(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
-
- FText(
- i18nBook.measure.toolbox.t,
- style: const TextStyle(
- color: Colors.white,
- ),
- ),
- LeftSiderHoldAllStyleConfig(ifHideConfig: ifHideConfig),
- ],
- ),
- const _LeftSiderTabBar(),
-
-
- ],
- ),
- );
- }
- }
- class LeftSiderHoldAllStyleConfig extends StatelessWidget implements FWidget {
- const LeftSiderHoldAllStyleConfig({Key? key, this.ifHideConfig = false})
- : super(key: key);
- final bool ifHideConfig;
- @override
- FWidget build(BuildContext context) {
- return FRow(
- children: [
- FTextButton(
- onPressed: () {
- Get.dialog(
- PatternDialog(),
- );
- },
- child: FText(
- i18nBook.measure.style.t,
- style: TextStyle(
- color: FTheme.ins.colorScheme.primary,
- ),
- ),
- ),
- if (!ifHideConfig) ...[
- FTextButton(
- onPressed: () {
- Get.dialog(
- const MeasureConfigurationPage(),
- );
- },
- child: FText(
- i18nBook.measure.config.t,
- style: TextStyle(
- color: FTheme.ins.colorScheme.primary,
- ),
- ),
- )
- ]
- ],
- );
- }
- }
- class _LeftSiderTabBar extends StatefulWidget implements FWidget {
- const _LeftSiderTabBar();
- @override
- State<_LeftSiderTabBar> createState() => _LeftSiderTabBarState();
- }
- class _LeftSiderTabBarState extends State<_LeftSiderTabBar>
- with TickerProviderStateMixin {
- late final measureHandler = Get.find<MeasureHandler>();
- late TabController tabController;
- late IApplication application = Get.find<IApplication>();
- List<Center> tabs = [];
- late final measureData = Get.find<MeasureDataController>();
-
- final measureController = Get.find<MeasureController>();
- final playerController = Get.find<IPlayerController>() as VidPlayerController;
- @override
- void initState() {
- super.initState();
- initTab();
- measureController.imageLoaded.addListener(onImageLoaded);
- }
- @override
- void dispose() {
- super.dispose();
- measureController.imageLoaded.removeListener(onImageLoaded);
- tabController.dispose();
- }
- void initTab() {
- Future.delayed(const Duration(milliseconds: 500), () {
- application = Get.find<IApplication>();
- if (application.isSingleFrame) {
- if (application.visuals.length > 1) {
- tabs = [i18nBook.measure.annotationTool.t]
- .map((e) => Center(child: Tab(text: e)))
- .toList();
- measureHandler.changedTab = TagEnum.NodesTool;
- } else {
- tabs = [
- i18nBook.measure.measureTool.t,
- i18nBook.measure.annotationTool.t
- ].map((e) => Center(child: Tab(text: e))).toList();
- measureHandler.changedTab = TagEnum.MeasureTool;
- }
- } else {
- tabs = [
- i18nBook.measure.measureTool.t,
- i18nBook.measure.annotationTool.t
- ].map((e) => Center(child: Tab(text: e))).toList();
- measureHandler.changedTab = TagEnum.MeasureTool;
- }
- setState(() {});
- });
- }
- void onImageLoaded(Object sender, ExamImageInfo? e) {
- if (!mounted) return;
- initTab();
- }
- void getItemMetaListChanged(sender, e) {
- Future.delayed(const Duration(milliseconds: 300), () {
- application = Get.find<IApplication>();
- if (application.canMeasure) {
- if (application.visuals.length > 1) {
- tabs = [i18nBook.measure.annotationTool.t]
- .map((e) => Center(child: Tab(text: e)))
- .toList();
- measureHandler.changedTab = TagEnum.NodesTool;
- } else {
- tabs = [
- i18nBook.measure.measureTool.t,
- i18nBook.measure.annotationTool.t
- ].map((e) => Center(child: Tab(text: e))).toList();
- measureHandler.changedTab = TagEnum.MeasureTool;
- }
- } else {
- tabs = [
- i18nBook.measure.measureTool.t,
- i18nBook.measure.annotationTool.t
- ].map((e) => Center(child: Tab(text: e))).toList();
- measureHandler.changedTab = TagEnum.MeasureTool;
- }
- setState(() {});
- });
- }
- @override
- void didUpdateWidget(covariant _LeftSiderTabBar oldWidget) {
- super.didUpdateWidget(oldWidget);
- }
- @override
- FWidget build(BuildContext context) {
- tabController = TabController(
- vsync: this,
- length: tabs.length,
- initialIndex: 0,
- );
- final _colorScheme = FTheme.ins.colorScheme;
- return FTabBar(
- indicatorWeight: 2,
- indicatorColor: _colorScheme.primary,
- labelColor: _colorScheme.primary,
- indicatorSize: TabBarIndicatorSize.label,
- unselectedLabelColor: Colors.white,
- onTap: (int index) {
- try {
- measureHandler.changedTab = TagEnum.values[index];
- } catch (e) {}
- },
- tabs: tabs,
- controller: tabController,
- );
- }
- }
- class _LeftPulldown extends StatelessWidget implements FWidget {
- @override
- FWidget build(BuildContext context) {
- return FContainer(
- margin: const EdgeInsets.symmetric(vertical: 4),
- child: FSelect<MeasureSelectModel, String>(
- source: [
- MeasureSelectModel(
- name: 'General',
- code: 'General',
- )
- ],
- hintText: i18nBook.measure.selectMeasureItem.t,
- value: 'General',
- clearable: false,
- height: 36,
- width: 400,
- optionLabelExtractor: (data) => data.name,
- optionValueExtractor: (data) => data.code,
- onSelectChanged: (value, index) {},
- ),
- );
- }
- }
|