Newer
Older
SmTIAS-Capture / lib / widgets / cropped_snapshot.dart
import 'dart:typed_data';

import 'package:flutter/material.dart';

import 'package:smtias_capture/models/preview_region.dart';
import 'package:smtias_capture/widgets/region_crop.dart';

/// 保存中に表示するスナップショット画像 [bytes] を [region] でクロップ表示する.
///
/// スナップショット(preview.jpg)は native 側で既に向き処理(`rotation:90 + mirror`)
/// 済みのため,ここでは追加の反転は行わず,[RegionCrop] で同一座標系のクロップのみ
/// 適用してライブ表示と範囲を一致させる.
class CroppedSnapshot extends StatelessWidget {
  const CroppedSnapshot({super.key, required this.bytes, required this.region});

  final Uint8List bytes;

  /// クロップ領域(表示後の画面座標 0.0–1.0/ライブと共通).
  final PreviewRegion region;

  @override
  Widget build(BuildContext context) {
    return RegionCrop(
      region: region,
      child: Image.memory(bytes, fit: BoxFit.contain, gaplessPlayback: true),
    );
  }
}