123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import 'package:fis_measure/interfaces/process/items/item.dart';
- import 'package:fis_measure/interfaces/process/items/item_feature.dart';
- import 'package:fis_measure/interfaces/process/workspace/application.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- class MeasureItemCanvas extends StatefulWidget {
- @override
- State<StatefulWidget> createState() => _MeasureItemCanvasState();
- }
- class _MeasureItemCanvasState extends State<MeasureItemCanvas> {
- @override
- Widget build(BuildContext context) {
- return Container();
- }
- }
- class MeasureActiveCanvasPanel extends StatefulWidget {
- const MeasureActiveCanvasPanel({Key? key}) : super(key: key);
- @override
- State<StatefulWidget> createState() => _ActiveCanvasPanelState();
- }
- class _ActiveCanvasPanelState extends State<MeasureActiveCanvasPanel> {
- late final application = Get.find<IApplication>();
- IMeasureItem? item;
- IMeasureItemFeature? feature;
- @override
- void initState() {
- item = application.activeItem;
- feature = item?.feature;
- super.initState();
- WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
- _addListenrs();
- });
- }
- @override
- void dispose() {
- _removeListenrs();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- if (feature == null) return const SizedBox();
- return LayoutBuilder(builder: (context, constraints) {
- return SizedBox(
- width: constraints.maxWidth,
- height: constraints.maxHeight,
- child: RepaintBoundary(
- child: CustomPaint(
- painter: _PanelPainter(feature!),
- ),
- ),
- );
- });
- return RepaintBoundary(
- child: CustomPaint(
- painter: _PanelPainter(feature!),
- ),
- );
- }
- void _onActiveItemChanged(Object sender, IMeasureItem? e) {
- if (e != item) {
- _removeListenrs();
- item = e;
- feature = e?.feature;
- _addListenrs();
- }
- }
- void _onActiveItemFeatureChanged(Object sender, IMeasureItemFeature? e) {
- setState(() {
- feature = e;
- });
- }
- void _addListenrs() {
- application.activeItemChanged.addListener(_onActiveItemChanged);
- application.activeItem?.featureChanged
- .addListener(_onActiveItemFeatureChanged);
- }
- void _removeListenrs() {
- application.activeItemChanged.removeListener(_onActiveItemChanged);
- application.activeItem?.featureChanged
- .removeListener(_onActiveItemFeatureChanged);
- }
- }
- class _PanelPainter extends CustomPainter {
- final IMeasureItemFeature feature;
- _PanelPainter(this.feature);
- @override
- void paint(Canvas canvas, Size size) {
- feature.paint(canvas, size);
- }
- @override
- bool shouldRepaint(covariant _PanelPainter oldDelegate) {
- return oldDelegate.hashCode != hashCode;
- }
- }
|