[camera] Migrate deprecated Scaffold methods to ScaffoldMessenger (#5151)
diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md
index 03b9293..cf50222 100644
--- a/packages/camera/camera/CHANGELOG.md
+++ b/packages/camera/camera/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.9.4+19
+
+* Migrate deprecated Scaffold SnackBar methods to ScaffoldMessenger.
+
## 0.9.4+18
* Fixes a crash in iOS when streaming on low-performance devices.
diff --git a/packages/camera/camera/example/lib/main.dart b/packages/camera/camera/example/lib/main.dart
index d47edfe..f9f1378 100644
--- a/packages/camera/camera/example/lib/main.dart
+++ b/packages/camera/camera/example/lib/main.dart
@@ -10,6 +10,7 @@
import 'package:camera/camera.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
+import 'package:flutter/scheduler.dart';
import 'package:video_player/video_player.dart';
class CameraExampleHome extends StatefulWidget {
@@ -121,12 +122,9 @@
}
}
- final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
-
@override
Widget build(BuildContext context) {
return Scaffold(
- key: _scaffoldKey,
appBar: AppBar(
title: const Text('Camera example'),
),
@@ -583,7 +581,10 @@
};
if (cameras.isEmpty) {
- return const Text('No camera found');
+ _ambiguate(SchedulerBinding.instance)?.addPostFrameCallback((_) async {
+ showInSnackBar('No camera found.');
+ });
+ return const Text('None');
} else {
for (final CameraDescription cameraDescription in cameras) {
toggles.add(
@@ -609,8 +610,8 @@
String timestamp() => DateTime.now().millisecondsSinceEpoch.toString();
void showInSnackBar(String message) {
- // ignore: deprecated_member_use
- _scaffoldKey.currentState?.showSnackBar(SnackBar(content: Text(message)));
+ ScaffoldMessenger.of(context)
+ .showSnackBar(SnackBar(content: Text(message)));
}
void onViewFinderTap(TapDownDetails details, BoxConstraints constraints) {
diff --git a/packages/camera/camera/example/test/main_test.dart b/packages/camera/camera/example/test/main_test.dart
new file mode 100644
index 0000000..9a5fcdf
--- /dev/null
+++ b/packages/camera/camera/example/test/main_test.dart
@@ -0,0 +1,16 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'package:camera_example/main.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+void main() {
+ testWidgets('Test snackbar', (WidgetTester tester) async {
+ WidgetsFlutterBinding.ensureInitialized();
+ await tester.pumpWidget(CameraApp());
+ await tester.pumpAndSettle();
+ expect(find.byType(SnackBar), findsOneWidget);
+ });
+}
diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml
index 064eb91..2533583 100644
--- a/packages/camera/camera/pubspec.yaml
+++ b/packages/camera/camera/pubspec.yaml
@@ -4,7 +4,7 @@
Dart.
repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.9.4+18
+version: 0.9.4+19
environment:
sdk: ">=2.14.0 <3.0.0"