Jennifer

fix: Add back LayoutBuilder to calculate the correct widgetSize

@@ -248,36 +248,38 @@ class _MobileScannerState extends State<MobileScanner> @@ -248,36 +248,38 @@ class _MobileScannerState extends State<MobileScanner>
248 248
249 @override 249 @override
250 Widget build(BuildContext context) { 250 Widget build(BuildContext context) {
251 - final Size size = MediaQuery.of(context).size;  
252 -  
253 - return ValueListenableBuilder<MobileScannerArguments?>(  
254 - valueListenable: _controller.startArguments,  
255 - builder: (context, value, child) {  
256 - if (value == null) {  
257 - return _buildPlaceholderOrError(context, child);  
258 - }  
259 -  
260 - if (widget.scanWindow != null && scanWindow == null) {  
261 - scanWindow = calculateScanWindowRelativeToTextureInPercentage(  
262 - widget.fit,  
263 - widget.scanWindow!,  
264 - value.size,  
265 - size,  
266 - );  
267 -  
268 - _controller.updateScanWindow(scanWindow);  
269 - }  
270 - if (widget.overlay != null) {  
271 - return Stack(  
272 - alignment: Alignment.center,  
273 - children: [  
274 - _scanner(value.size, value.webId, value.textureId),  
275 - widget.overlay!,  
276 - ],  
277 - );  
278 - } else {  
279 - return _scanner(value.size, value.webId, value.textureId);  
280 - } 251 + return LayoutBuilder(
  252 + builder: (context, constraints) {
  253 + return ValueListenableBuilder<MobileScannerArguments?>(
  254 + valueListenable: _controller.startArguments,
  255 + builder: (context, value, child) {
  256 + if (value == null) {
  257 + return _buildPlaceholderOrError(context, child);
  258 + }
  259 +
  260 + if (widget.scanWindow != null && scanWindow == null) {
  261 + scanWindow = calculateScanWindowRelativeToTextureInPercentage(
  262 + widget.fit,
  263 + widget.scanWindow!,
  264 + value.size,
  265 + Size(constraints.maxWidth, constraints.maxHeight),
  266 + );
  267 +
  268 + _controller.updateScanWindow(scanWindow);
  269 + }
  270 + if (widget.overlay != null) {
  271 + return Stack(
  272 + alignment: Alignment.center,
  273 + children: [
  274 + _scanner(value.size, value.webId, value.textureId),
  275 + widget.overlay!,
  276 + ],
  277 + );
  278 + } else {
  279 + return _scanner(value.size, value.webId, value.textureId);
  280 + }
  281 + },
  282 + );
281 }, 283 },
282 ); 284 );
283 } 285 }