step 18 : add dropdown seting camera
This commit is contained in:
@@ -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),
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user