实现效果
1.首先在pubspec.yaml引用插件
#相机
camera: ^0.5.8+2
video_player: ^0.10.11+1
flutter_image_compress: ^0.6.8
flutter_spinkit: ^4.1.2+1
2.新建IdentifyCard.dart类
代码如下
import 'dart:async';
import 'dart:io';
import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:video_player/video_player.dart';
import 'package:dio/dio.dart';
import 'package:flutter_image_compress/flutter_image_compress.dart';
import 'package:path_provider/path_provider.dart' as path_provider;
import 'package:flutter_spinkit/flutter_spinkit.dart';
Future<void> getIdentifyCardDemo() async {
// Fetch the available cameras before initializing the app.
try {
cameras = await availableCameras();
FlutterImageCompress.showNativeLog = true;
} on CameraException catch (e) {
logError(e.code, e.description);
}
//return new IdentifyCard();
}
class IdentifyCard extends StatefulWidget {
@override
_IdentifyCardState createState() {
return _IdentifyCardState();
}
}
void logError(String code, String message) => print('Error: $code\nError Message: $message');
class _IdentifyCardState extends State<IdentifyCard> {
CameraController controller;
//String imagePath;
String videoPath;
VideoPlayerController videoController;
VoidCallback videoPlayerListener;
WidgetsBinding widgetsBinding;
List<CameraDescription> cameras;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
getCameras();
photoPath=null;
}
@override
void dispose(){
super.dispose();
controller.dispose();
videoController.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
body: new Container(
color: Colors.black,
child: new Stack(children: <Widget>[
new Column(
children: <Widget>[
Expanded(
flex: 6, //flex用来设置当前可用空间的占优比
child: new Stack(children: <Widget>[
_cameraPreviewWidget(), //相机视图
// _cameraFloatImage(),//悬浮的身份证框图
]),
),
Expanded(
//flex用来设置当前可用空间的占优比
flex: