Skip to content

Commit c857f7e

Browse files
committed
♻️ Make build widget method signatures consistent
1 parent 210fcbf commit c857f7e

File tree

1 file changed

+74
-41
lines changed

1 file changed

+74
-41
lines changed

lib/src/states/camera_picker_state.dart

Lines changed: 74 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,7 +1245,10 @@ class CameraPickerState extends State<CameraPicker>
12451245
return const SizedBox.shrink();
12461246
}
12471247
Widget backButton = buildBackButton(context);
1248-
Widget flashModeSwitch = buildFlashModeSwitch(context, v);
1248+
Widget flashModeSwitch = buildFlashModeSwitch(
1249+
context: context,
1250+
cameraValue: v,
1251+
);
12491252
if (isCameraRotated && !enableScaledPreview) {
12501253
backButton = RotatedBox(
12511254
quarterTurns: cameraQuarterTurns,
@@ -1296,9 +1299,12 @@ class CameraPickerState extends State<CameraPicker>
12961299

12971300
/// The button to switch flash modes.
12981301
/// 切换闪光灯模式的按钮
1299-
Widget buildFlashModeSwitch(BuildContext context, CameraValue value) {
1302+
Widget buildFlashModeSwitch({
1303+
required BuildContext context,
1304+
required CameraValue cameraValue,
1305+
}) {
13001306
final IconData icon;
1301-
switch (value.flashMode) {
1307+
switch (cameraValue.flashMode) {
13021308
case FlashMode.off:
13031309
icon = Icons.flash_off;
13041310
break;
@@ -1313,15 +1319,18 @@ class CameraPickerState extends State<CameraPicker>
13131319
break;
13141320
}
13151321
return IconButton(
1316-
onPressed: () => switchFlashesMode(value),
1317-
tooltip: textDelegate.sFlashModeLabel(value.flashMode),
1322+
onPressed: () => switchFlashesMode(cameraValue),
1323+
tooltip: textDelegate.sFlashModeLabel(cameraValue.flashMode),
13181324
icon: Icon(icon, size: 24),
13191325
);
13201326
}
13211327

13221328
/// Text widget for shooting tips.
13231329
/// 拍摄的提示文字
1324-
Widget buildCaptureTips(CameraController? controller) {
1330+
Widget buildCaptureTips({
1331+
required BuildContext context,
1332+
CameraController? controller,
1333+
}) {
13251334
return AnimatedOpacity(
13261335
duration: recordDetectDuration,
13271336
opacity: controller?.value.isRecordingVideo ?? false ? 0 : 1,
@@ -1398,7 +1407,10 @@ class CameraPickerState extends State<CameraPicker>
13981407
const Spacer(),
13991408
Expanded(
14001409
child: Center(
1401-
child: buildCaptureButton(context, constraints),
1410+
child: buildCaptureButton(
1411+
context: context,
1412+
constraints: constraints,
1413+
),
14021414
),
14031415
),
14041416
if (controller != null &&
@@ -1429,7 +1441,10 @@ class CameraPickerState extends State<CameraPicker>
14291441

14301442
/// The shooting button.
14311443
/// 拍照按钮
1432-
Widget buildCaptureButton(BuildContext context, BoxConstraints constraints) {
1444+
Widget buildCaptureButton({
1445+
required BuildContext context,
1446+
required BoxConstraints constraints,
1447+
}) {
14331448
final showProgressIndicator =
14341449
isCaptureButtonTapDown || MediaQuery.accessibleNavigationOf(context);
14351450

@@ -1514,6 +1529,7 @@ class CameraPickerState extends State<CameraPicker>
15141529
}
15151530

15161531
Widget buildExposureSlider({
1532+
required BuildContext context,
15171533
required ExposureMode mode,
15181534
required double size,
15191535
required double height,
@@ -1580,6 +1596,7 @@ class CameraPickerState extends State<CameraPicker>
15801596
/// The area widget for the last exposure point that user manually set.
15811597
/// 用户手动设置的曝光点的区域显示
15821598
Widget buildFocusingPoint({
1599+
required BuildContext context,
15831600
required CameraValue cameraValue,
15841601
required BoxConstraints constraints,
15851602
int quarterTurns = 0,
@@ -1612,6 +1629,7 @@ class CameraPickerState extends State<CameraPicker>
16121629
const SizedBox(height: verticalGap),
16131630
Expanded(
16141631
child: buildExposureSlider(
1632+
context: context,
16151633
mode: exposureMode,
16161634
size: size,
16171635
height: height,
@@ -1718,10 +1736,10 @@ class CameraPickerState extends State<CameraPicker>
17181736

17191737
/// The [GestureDetector] widget for setting exposure point manually.
17201738
/// 用于手动设置曝光点的 [GestureDetector]
1721-
Widget buildExposureDetector(
1722-
BuildContext context,
1723-
BoxConstraints constraints,
1724-
) {
1739+
Widget buildExposureDetector({
1740+
required BuildContext context,
1741+
required BoxConstraints constraints,
1742+
}) {
17251743
return Semantics(
17261744
label: textDelegate.sCameraPreviewLabel(
17271745
innerController?.description.lensDirection,
@@ -1812,8 +1830,9 @@ class CameraPickerState extends State<CameraPicker>
18121830
children: <Widget>[
18131831
preview,
18141832
if (pickerConfig.enableSetExposure)
1815-
buildExposureDetector(context, constraints),
1833+
buildExposureDetector(context: context, constraints: constraints),
18161834
buildFocusingPoint(
1835+
context: context,
18171836
cameraValue: cameraValue,
18181837
constraints: constraints,
18191838
quarterTurns: cameraQuarterTurns,
@@ -1865,11 +1884,11 @@ class CameraPickerState extends State<CameraPicker>
18651884
);
18661885
}
18671886

1868-
Widget buildForegroundBody(
1869-
BuildContext context,
1870-
BoxConstraints constraints,
1887+
Widget buildForegroundBody({
1888+
required BuildContext context,
1889+
required BoxConstraints constraints,
18711890
DeviceOrientation? deviceOrientation,
1872-
) {
1891+
}) {
18731892
final orientation = deviceOrientation ?? MediaQuery.orientationOf(context);
18741893
final isPortrait = orientation.toString().contains('portrait');
18751894
return SafeArea(
@@ -1888,7 +1907,12 @@ class CameraPickerState extends State<CameraPicker>
18881907
child: buildSettingActions(context),
18891908
),
18901909
const Spacer(),
1891-
ExcludeSemantics(child: buildCaptureTips(innerController)),
1910+
ExcludeSemantics(
1911+
child: buildCaptureTips(
1912+
context: context,
1913+
controller: innerController,
1914+
),
1915+
),
18921916
Semantics(
18931917
sortKey: const OrdinalSortKey(2),
18941918
hidden: innerController == null,
@@ -1974,9 +1998,13 @@ class CameraPickerState extends State<CameraPicker>
19741998
previewWidget,
19751999
if (enableScaledPreview) ...<Widget>[
19762000
if (pickerConfig.enableSetExposure)
1977-
buildExposureDetector(context, constraints),
2001+
buildExposureDetector(
2002+
context: context,
2003+
constraints: constraints,
2004+
),
19782005
buildInitializeWrapper(
19792006
builder: (CameraValue v, _) => buildFocusingPoint(
2007+
context: context,
19802008
cameraValue: v,
19812009
constraints: constraints,
19822010
),
@@ -1988,13 +2016,17 @@ class CameraPickerState extends State<CameraPicker>
19882016
),
19892017
],
19902018
if (innerController == null)
1991-
buildForegroundBody(context, constraints, null)
2019+
buildForegroundBody(
2020+
context: context,
2021+
constraints: constraints,
2022+
deviceOrientation: null,
2023+
)
19922024
else
19932025
buildInitializeWrapper(
19942026
builder: (CameraValue v, _) => buildForegroundBody(
1995-
context,
1996-
constraints,
1997-
v.deviceOrientation,
2027+
context: context,
2028+
constraints: constraints,
2029+
deviceOrientation: v.deviceOrientation,
19982030
),
19992031
),
20002032
],
@@ -2005,21 +2037,6 @@ class CameraPickerState extends State<CameraPicker>
20052037

20062038
@override
20072039
Widget build(BuildContext context) {
2008-
Widget body = Builder(builder: buildBody);
2009-
if (isCameraRotated && enableScaledPreview) {
2010-
final MediaQueryData mq = MediaQuery.of(context);
2011-
body = RotatedBox(
2012-
quarterTurns: pickerConfig.cameraQuarterTurns,
2013-
child: MediaQuery(
2014-
data: mq.copyWith(
2015-
size: pickerConfig.cameraQuarterTurns.isOdd
2016-
? mq.size.flipped
2017-
: mq.size,
2018-
),
2019-
child: body,
2020-
),
2021-
);
2022-
}
20232040
return AnnotatedRegion<SystemUiOverlayStyle>(
20242041
value: const SystemUiOverlayStyle(
20252042
systemNavigationBarIconBrightness: Brightness.light,
@@ -2028,9 +2045,25 @@ class CameraPickerState extends State<CameraPicker>
20282045
),
20292046
child: Theme(
20302047
data: theme,
2031-
child: Material(
2032-
color: Colors.black,
2033-
child: body,
2048+
child: Builder(
2049+
builder: (context) {
2050+
Widget body = buildBody(context);
2051+
if (isCameraRotated && enableScaledPreview) {
2052+
final MediaQueryData mq = MediaQuery.of(context);
2053+
body = RotatedBox(
2054+
quarterTurns: pickerConfig.cameraQuarterTurns,
2055+
child: MediaQuery(
2056+
data: mq.copyWith(
2057+
size: pickerConfig.cameraQuarterTurns.isOdd
2058+
? mq.size.flipped
2059+
: mq.size,
2060+
),
2061+
child: body,
2062+
),
2063+
);
2064+
}
2065+
return Material(color: Colors.black, child: body);
2066+
},
20342067
),
20352068
),
20362069
);

0 commit comments

Comments
 (0)