fix: Add back LayoutBuilder to calculate the correct widgetSize
Showing
1 changed file
with
32 additions
and
30 deletions
| @@ -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 | } |
-
Please register or login to post a comment