step 18 : add dropdown seting camera

This commit is contained in:
sindhu
2025-02-18 12:01:20 +07:00
parent ac86a49e77
commit d9a8bf5de4
2 changed files with 47 additions and 5 deletions

View File

@@ -78,6 +78,13 @@ class Constant {
); );
} }
static TextStyle titlePosisiHP({required BuildContext context}) {
return TextStyle(
fontSize: Constant.getActualYPhone(context: context, y: 18),
fontWeight: FontWeight.normal,
);
}
static TextStyle titleInputan600({required BuildContext context}) { static TextStyle titleInputan600({required BuildContext context}) {
return TextStyle( return TextStyle(
fontSize: Constant.getActualYPhone(context: context, y: 16), fontSize: Constant.getActualYPhone(context: context, y: 16),

View File

@@ -31,15 +31,17 @@ class ScanScreen extends HookConsumerWidget {
final currentUser = ref.watch(currentUserProvider); final currentUser = ref.watch(currentUserProvider);
final host = currentUser?.host ?? ""; final host = currentUser?.host ?? "";
final userId = currentUser?.model.userId ?? ""; final userId = currentUser?.model.userId ?? "";
final selectedResolution =
useState<ResolutionPreset>(ResolutionPreset.medium);
useEffect(() { useEffect(() {
Future<void> initializeCamera() async { Future<void> initializeCamera() async {
final cameras = await availableCameras(); final cameras = await availableCameras();
cameraController.value = CameraController( cameraController.value = CameraController(
cameras[0], cameras[0],
// ResolutionPreset.max, // ResolutionPreset.max,
ResolutionPreset.medium, // ResolutionPreset.medium,
); selectedResolution.value);
initializeControllerFuture.value = cameraController.value!.initialize(); initializeControllerFuture.value = cameraController.value!.initialize();
await initializeControllerFuture.value; await initializeControllerFuture.value;
await cameraController.value!.setFlashMode(FlashMode.off); await cameraController.value!.setFlashMode(FlashMode.off);
@@ -49,6 +51,18 @@ class ScanScreen extends HookConsumerWidget {
return null; return null;
}, []); }, []);
Future<void> initializeCameraAfterChangeResolution() async {
final cameras = await availableCameras();
cameraController.value = CameraController(
cameras[0],
// ResolutionPreset.max,
// ResolutionPreset.medium,
selectedResolution.value);
initializeControllerFuture.value = cameraController.value!.initialize();
await initializeControllerFuture.value;
await cameraController.value!.setFlashMode(FlashMode.off);
}
Future<File> rotateAndCropImage(File imageFile) async { Future<File> rotateAndCropImage(File imageFile) async {
Uint8List imageBytes = await imageFile.readAsBytes(); Uint8List imageBytes = await imageFile.readAsBytes();
img.Image? original = img.decodeImage(imageBytes); img.Image? original = img.decodeImage(imageBytes);
@@ -188,8 +202,29 @@ class ScanScreen extends HookConsumerWidget {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: Text('Posisi Foto Landscape'), title: Text(
'Posisi Foto Landscape',
style: Constant.titlePosisiHP(context: context),
),
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
actions: [
DropdownButton<ResolutionPreset>(
value: selectedResolution.value,
onChanged: (ResolutionPreset? newValue) {
if (newValue != null) {
selectedResolution.value = newValue;
initializeCameraAfterChangeResolution();
}
},
items: ResolutionPreset.values.map((ResolutionPreset value) {
return DropdownMenuItem<ResolutionPreset>(
value: value,
child: Text(value.toString().split('.').last),
);
}).toList(),
underline: SizedBox.shrink(),
),
],
), ),
backgroundColor: Colors.black.withOpacity(0.5), backgroundColor: Colors.black.withOpacity(0.5),
body: Stack( body: Stack(