Skip to content

Commit 3647ba1

Browse files
authored
[camera] Migrate deprecated Scaffold methods to ScaffoldMessenger (flutter#5151)
1 parent 7d1923f commit 3647ba1

4 files changed

Lines changed: 28 additions & 7 deletions

File tree

packages/camera/camera/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.9.4+19
2+
3+
* Migrate deprecated Scaffold SnackBar methods to ScaffoldMessenger.
4+
15
## 0.9.4+18
26

37
* Fixes a crash in iOS when streaming on low-performance devices.

packages/camera/camera/example/lib/main.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'dart:io';
1010
import 'package:camera/camera.dart';
1111
import 'package:flutter/foundation.dart';
1212
import 'package:flutter/material.dart';
13+
import 'package:flutter/scheduler.dart';
1314
import 'package:video_player/video_player.dart';
1415

1516
class CameraExampleHome extends StatefulWidget {
@@ -121,12 +122,9 @@ class _CameraExampleHomeState extends State<CameraExampleHome>
121122
}
122123
}
123124

124-
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
125-
126125
@override
127126
Widget build(BuildContext context) {
128127
return Scaffold(
129-
key: _scaffoldKey,
130128
appBar: AppBar(
131129
title: const Text('Camera example'),
132130
),
@@ -583,7 +581,10 @@ class _CameraExampleHomeState extends State<CameraExampleHome>
583581
};
584582

585583
if (cameras.isEmpty) {
586-
return const Text('No camera found');
584+
_ambiguate(SchedulerBinding.instance)?.addPostFrameCallback((_) async {
585+
showInSnackBar('No camera found.');
586+
});
587+
return const Text('None');
587588
} else {
588589
for (final CameraDescription cameraDescription in cameras) {
589590
toggles.add(
@@ -609,8 +610,8 @@ class _CameraExampleHomeState extends State<CameraExampleHome>
609610
String timestamp() => DateTime.now().millisecondsSinceEpoch.toString();
610611

611612
void showInSnackBar(String message) {
612-
// ignore: deprecated_member_use
613-
_scaffoldKey.currentState?.showSnackBar(SnackBar(content: Text(message)));
613+
ScaffoldMessenger.of(context)
614+
.showSnackBar(SnackBar(content: Text(message)));
614615
}
615616

616617
void onViewFinderTap(TapDownDetails details, BoxConstraints constraints) {
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:camera_example/main.dart';
6+
import 'package:flutter/material.dart';
7+
import 'package:flutter_test/flutter_test.dart';
8+
9+
void main() {
10+
testWidgets('Test snackbar', (WidgetTester tester) async {
11+
WidgetsFlutterBinding.ensureInitialized();
12+
await tester.pumpWidget(CameraApp());
13+
await tester.pumpAndSettle();
14+
expect(find.byType(SnackBar), findsOneWidget);
15+
});
16+
}

packages/camera/camera/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: A Flutter plugin for controlling the camera. Supports previewing
44
Dart.
55
repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera
66
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
7-
version: 0.9.4+18
7+
version: 0.9.4+19
88

99
environment:
1010
sdk: ">=2.14.0 <3.0.0"

0 commit comments

Comments
 (0)