import 'package:flutter/material.dart'; import 'embedder_texture_platform_interface.dart'; class EmbedderTexture extends StatefulWidget { const EmbedderTexture({ super.key, required this.width, required this.height, }); final double width; final double height; @override State createState() => _EmbedderTextureState(); } class _EmbedderTextureState extends State { int _textureID = 0; int _camera_width = 0; int _camera_height = 0; @override initState() { super.initState(); EmbedderTexturePlatform.instance .create(widget.width, widget.height) .then((data) => setState(() { if (mounted) { _textureID = data['textureId']!; _camera_width = data['width']!; _camera_height = data['height']!; debugPrint(_textureID.toString()); } })); } @override void dispose() { super.dispose(); EmbedderTexturePlatform.instance.remove(_textureID); } @override Widget build(BuildContext context) { if (_textureID != 0) { double w = 0; double h = 0; if (MediaQuery.of(context).orientation == Orientation.portrait) { w = _camera_width * widget.height / (widget.width - 40); h = widget.width - 40; } else { w = _camera_height.toDouble(); h = widget.height - 40 - 56; } return Container( color: Colors.black, width: widget.width, height: widget.height, child: Center( child: RotationTransition( turns: AlwaysStoppedAnimation(MediaQuery.of(context).orientation == Orientation.portrait ? 90 / 360 : 0), child: SizedBox( width: w, height: h, child: Texture(textureId: _textureID) ), ) ), ); } return const SizedBox.shrink(); } }