Rebuild camera preview when camera value changes (#4197)
diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md
index 9915655..d455ddb 100644
--- a/packages/camera/camera/CHANGELOG.md
+++ b/packages/camera/camera/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.8.1+7
+
+* Fix device orientation sometimes not affecting the camera preview orientation.
+
## 0.8.1+6
* Remove references to the Android V1 embedding.
diff --git a/packages/camera/camera/lib/src/camera_preview.dart b/packages/camera/camera/lib/src/camera_preview.dart
index e2f1ff9..ad3175a 100644
--- a/packages/camera/camera/lib/src/camera_preview.dart
+++ b/packages/camera/camera/lib/src/camera_preview.dart
@@ -21,17 +21,23 @@
@override
Widget build(BuildContext context) {
return controller.value.isInitialized
- ? AspectRatio(
- aspectRatio: _isLandscape()
- ? controller.value.aspectRatio
- : (1 / controller.value.aspectRatio),
- child: Stack(
- fit: StackFit.expand,
- children: [
- _wrapInRotatedBox(child: controller.buildPreview()),
- child ?? Container(),
- ],
- ),
+ ? ValueListenableBuilder(
+ valueListenable: controller,
+ builder: (context, value, child) {
+ return AspectRatio(
+ aspectRatio: _isLandscape()
+ ? controller.value.aspectRatio
+ : (1 / controller.value.aspectRatio),
+ child: Stack(
+ fit: StackFit.expand,
+ children: [
+ _wrapInRotatedBox(child: controller.buildPreview()),
+ child ?? Container(),
+ ],
+ ),
+ );
+ },
+ child: child,
)
: Container();
}
diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml
index 56df2ca..5716165 100644
--- a/packages/camera/camera/pubspec.yaml
+++ b/packages/camera/camera/pubspec.yaml
@@ -4,7 +4,7 @@
and streaming image buffers to dart.
repository: https://github.com/flutter/plugins/tree/master/packages/camera/camera
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.8.1+6
+version: 0.8.1+7
environment:
sdk: ">=2.12.0 <3.0.0"