Skip to content

Instantly share code, notes, and snippets.

@GabrielAraujo
Created February 8, 2023 10:54
Show Gist options
  • Save GabrielAraujo/86ad8f9024216bc5bafc09a6ae684cef to your computer and use it in GitHub Desktop.
Save GabrielAraujo/86ad8f9024216bc5bafc09a6ae684cef to your computer and use it in GitHub Desktop.
CameraAwesome changed main to open/close camera widget
import 'dart:io';
import 'package:better_open_file/better_open_file.dart';
import 'package:camerawesome/camerawesome_plugin.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
void main() {
runApp(const CameraAwesomeApp());
}
class CameraAwesomeApp extends StatelessWidget {
const CameraAwesomeApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'camerAwesome',
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
const valueKey = ValueKey('camera');
class _HomePageState extends State<HomePage> {
bool displayCamera = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(children: [
Expanded(
child:
displayCamera ? const CameraPage(key: valueKey) : Container()),
Container(
height: 200,
margin: const EdgeInsets.only(top: 16),
child: TextButton(
child: Text(displayCamera ? 'Close' : 'Open'),
onPressed: () {
setState(() {
displayCamera = !displayCamera;
});
}),
)
]),
);
}
}
class CameraPage extends StatelessWidget {
const CameraPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: CameraAwesomeBuilder.awesome(
saveConfig: SaveConfig.photoAndVideo(
photoPathBuilder: () => _path(CaptureMode.photo),
videoPathBuilder: () => _path(CaptureMode.video),
initialCaptureMode: CaptureMode.photo,
),
filter: AwesomeFilter.AddictiveRed,
flashMode: FlashMode.auto,
aspectRatio: CameraAspectRatios.ratio_16_9,
previewFit: CameraPreviewFit.fitWidth,
onMediaTap: (mediaCapture) {
OpenFile.open(mediaCapture.filePath);
},
),
);
}
Future<String> _path(CaptureMode captureMode) async {
final Directory extDir = await getTemporaryDirectory();
final testDir =
await Directory('${extDir.path}/test').create(recursive: true);
final String fileExtension =
captureMode == CaptureMode.photo ? 'jpg' : 'mp4';
final String filePath =
'${testDir.path}/${DateTime.now().millisecondsSinceEpoch}.$fileExtension';
return filePath;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment