123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- import 'package:fis_measure/index.dart';
- import 'package:fis_measure/interfaces/process/items/measure_terms.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/interfaces/process/workspace/measure_controller.dart';
- import 'package:fis_measure/process/workspace/measure_controller.dart';
- import 'package:fis_measure/view/main/desktop.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- class MeasureTestPage extends StatefulWidget {
- const MeasureTestPage({Key? key}) : super(key: key);
- @override
- State<StatefulWidget> createState() => _MeasureTestPageState();
- }
- class _MeasureTestPageState extends State<MeasureTestPage> {
- static const C_LINEAR_TISSUE =
- "http://192.168.6.117:9303/Flyinsono-BJ-1300984704.VCS.AP-BeiJing/151394487066498fbb8f1e34ca0c7083.VID";
- static const C_CONVEX_TISSUE =
- "http://192.168.6.117:9001/Flyinsono-BJ-1300984704.VCS.AP-BeiJing/default.VID";
- final controller = Get.put<IMeasureController>(MeasureController(
- "12345",
- imagesFetchFunc: (code) async {
- return <ExamImageInfo>[
- ExamImageInfo(C_LINEAR_TISSUE, C_LINEAR_TISSUE),
- ExamImageInfo(C_CONVEX_TISSUE, C_CONVEX_TISSUE)
- ];
- },
- ));
- bool loaded = false;
- @override
- void initState() {
- controller.load().then((value) {
- // 加载指定图像
- controller.examInfo.selectedImageIndex = 0;
- });
- controller.imageLoaded.addListener(onImageLoaded);
- super.initState();
- }
- @override
- void dispose() {
- controller.imageLoaded.removeListener(onImageLoaded);
- controller.dispose();
- Get.delete<IMeasureController>();
- super.dispose();
- }
- void onImageLoaded(Object sender, ExamImageInfo? e) {
- if (!mounted) return;
- if (e != null) {
- setState(() {
- loaded = true;
- });
- }
- }
- @override
- Widget build(BuildContext context) {
- Widget body;
- if (!loaded) {
- const loadingWidget = Center(child: CircularProgressIndicator());
- body = Row(
- children: const [
- SizedBox(
- width: 300,
- child: loadingWidget,
- ),
- VerticalDivider(),
- Expanded(child: loadingWidget),
- ],
- );
- } else {
- body = Row(
- key: UniqueKey(),
- children: const [
- _MeasureLeftBoard(),
- VerticalDivider(),
- Expanded(
- child: _MeasureRightBoard(),
- ),
- ],
- );
- }
- return Scaffold(
- appBar: AppBar(
- actions: [
- TextButton(
- onPressed: () {
- if (controller.examInfo.selectedImageIndex == 0) return;
- controller.examInfo.selectedImageIndex = 0;
- },
- child: Text(
- '线阵',
- style: TextStyle(
- color: controller.examInfo.selectedImageIndex == 0
- ? Colors.amber
- : Colors.white,
- ),
- ),
- ),
- TextButton(
- onPressed: () {
- if (controller.examInfo.selectedImageIndex == 1) return;
- controller.examInfo.selectedImageIndex = 1;
- },
- child: Text(
- '扇阵',
- style: TextStyle(
- color: controller.examInfo.selectedImageIndex == 1
- ? Colors.amber
- : Colors.white,
- ),
- ),
- ),
- ],
- leading: IconButton(
- onPressed: () {
- Navigator.of(context).pop();
- },
- icon: const Icon(Icons.arrow_back),
- ),
- ),
- body: body,
- );
- }
- }
- class _MeasureRightBoard extends StatefulWidget {
- const _MeasureRightBoard({Key? key}) : super(key: key);
- @override
- State<StatefulWidget> createState() => _MeasureRightBoardState();
- }
- class _MeasureRightBoardState extends State<_MeasureRightBoard> {
- final playerController = Get.find<IPlayerController>();
- @override
- Widget build(BuildContext context) {
- return Container(
- padding: const EdgeInsets.all(8).copyWith(left: 0),
- child: Column(
- children: [
- const Expanded(
- child: MeasureMainView(),
- ),
- const Divider(),
- SizedBox(
- height: 150,
- child: VidPlayerControlBoard(
- playerController as VidPlayerController,
- ),
- ),
- ],
- ),
- );
- }
- }
- class _MeasureLeftBoard extends StatefulWidget {
- const _MeasureLeftBoard({Key? key}) : super(key: key);
- @override
- State<StatefulWidget> createState() => _MeasureLeftBoardState();
- }
- class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
- // ignore: non_constant_identifier_names
- static final C_SUPPORTED_ITEMS = <String>[
- MeasureTerms.Distance,
- MeasureTerms.Perimeter,
- MeasureTerms.Area,
- MeasureTerms.Depth,
- ];
- final scrollController = ScrollController();
- final application = Get.find<IApplication>();
- int activeIndex = 0;
- @override
- void initState() {
- application.canMeasureChanged.addListener(_onCanMeasureChanged);
- super.initState();
- }
- @override
- dispose() {
- application.canMeasureChanged.removeListener(_onCanMeasureChanged);
- super.dispose();
- }
- _onCanMeasureChanged(Object sender, bool e) {
- if (e && mounted) {
- changeItem(0);
- }
- }
- @override
- Widget build(BuildContext context) {
- return Container(
- width: 300,
- padding: const EdgeInsets.symmetric(vertical: 16, horizontal: 12),
- child: Scrollbar(
- controller: scrollController,
- isAlwaysShown: true,
- child: ListView.separated(
- controller: scrollController,
- itemCount: C_SUPPORTED_ITEMS.length,
- itemBuilder: (BuildContext context, int index) {
- final name = C_SUPPORTED_ITEMS[index];
- final active = index == activeIndex;
- return active
- ? ElevatedButton(
- onPressed: () => changeItem(index),
- child: Text(name),
- style: ElevatedButton.styleFrom(
- fixedSize: const Size.fromHeight(50),
- ),
- )
- : OutlinedButton(
- onPressed: () => changeItem(index),
- child: Text(name),
- style: OutlinedButton.styleFrom(
- fixedSize: const Size.fromHeight(50),
- ),
- );
- },
- separatorBuilder: (BuildContext context, int index) {
- return const SizedBox(height: 8);
- },
- ),
- ),
- );
- }
- void changeItem(int index) {
- setState(() {
- activeIndex = index;
- });
- final name = C_SUPPORTED_ITEMS[index];
- print(name);
- application.switchItemByName(name);
- }
- }
|