gpt4 book ai didi

flutter :- Taking picture with camera

转载 作者:行者123 更新时间:2023-12-04 00:57:15 24 4
gpt4 key购买 nike

我是 Flutter 的新手,编写了以下代码以在图像上显示捕获的图像。但是,相机预览未显示在我的手机上,圆形指示器一直在旋转。我无法查看相机。

import 'dart:io';

import 'package:camera/camera.dart';
import 'package:flutter/material.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';

class CameraDemo extends StatefulWidget {
@override
_CameraDemoState createState() => _CameraDemoState();
}

class _CameraDemoState extends State<CameraDemo> {
CameraController _control;
Future<void> _future;
@override
void initState() {
// TODO: implement initState
super.initState();
_initApp();
}

void _initApp() async
{
WidgetsFlutterBinding.ensureInitialized();
final cameras = await availableCameras();
final firstCam = cameras.first;

_control = CameraController(
firstCam,
ResolutionPreset.high,
);

_future = _control.initialize();
}

@override
void dispose() {
// TODO: implement dispose
super.dispose();
_control.dispose();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Save Picture")),
body: FutureBuilder<void>(
future: _future,
builder: (context, snapshot) {
if(snapshot.connectionState==ConnectionState.done)
return CameraPreview(_control);
else
return Center(child: CircularProgressIndicator(),);

},
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.camera_alt),
onPressed: () async {
try {
await _future;

final path = join(
(await getTemporaryDirectory()).path,
'${DateTime.now()}.png',
);

await _control.takePicture(path);
Navigator.push(context, MaterialPageRoute(
builder: (context){
return DisplayPicture(imagepath:path);
},
));
} catch (e) {
print(e);
}
},
),
);
}


}

class DisplayPicture extends StatelessWidget {
String imagepath;
DisplayPicture({this.imagepath});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Display the Picture')),
// The image is stored as a file on the device. Use the `Image.file`
// constructor with the given path to display the image.
body: Image.file(File(imagepath)),
);
}
}

最佳答案

您需要使用 image_picker 库从相机和图库中获取图像,请检查下面的代码,我已经将它用于相机和图库。

import 'dart:io';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:image_picker/image_picker.dart';

class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _HomeScreen();
}
}

class _HomeScreen extends State<HomeScreen> {
File imageFile = null;

@override
void initState() {
// TODO: implement initState
super.initState();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text(
"HomeScreen",
textAlign: TextAlign.center,
),
),
body: SafeArea(
top: true,
bottom: true,
child: Align(
alignment: Alignment.center,
child: Column(
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width * 0.35,
height: MediaQuery.of(context).size.height * 0.2,
margin: EdgeInsets.only(top: 20),
decoration: BoxDecoration(
color: Colors.grey,
shape: BoxShape.circle,
image: DecorationImage(
image: imageFile == null
? AssetImage('images/ic_business.png')
: FileImage(imageFile),
fit: BoxFit.cover))),
SizedBox(
height: 10.0,
),
RaisedButton(
onPressed: () {
_settingModalBottomSheet(context);
},
child: Text("Take Photo")),
],
),
),
));
}

//********************** IMAGE PICKER
Future imageSelector(BuildContext context, String pickerType) async {
switch (pickerType) {
case "gallery":

/// GALLERY IMAGE PICKER
imageFile = await ImagePicker.pickImage(
source: ImageSource.gallery, imageQuality: 90);
break;

case "camera": // CAMERA CAPTURE CODE
imageFile = await ImagePicker.pickImage(
source: ImageSource.camera, imageQuality: 90);
break;
}

if (imageFile != null) {
print("You selected image : " + imageFile.path);
setState(() {
debugPrint("SELECTED IMAGE PICK $imageFile");
});
} else {
print("You have not taken image");
}
}

// Image picker
void _settingModalBottomSheet(context) {
showModalBottomSheet(
context: context,
builder: (BuildContext bc) {
return Container(
child: new Wrap(
children: <Widget>[
new ListTile(
title: new Text('Gallery'),
onTap: () => {
imageSelector(context, "gallery"),
Navigator.pop(context),
}),
new ListTile(
title: new Text('Camera'),
onTap: () => {
imageSelector(context, "camera"),
Navigator.pop(context)
},
),
],
),
);
});
}
}

在 list 中,您需要像下面那样为其输入相机

<uses-permission android:name="android.permission.CAMERA" />

还有一个我正在使用默认图像 ic_business.png,您可以使用它并确保在 pubspec.yaml

中输入

图书馆链接是Click here

输出如下
enter image description here

关于 flutter :- Taking picture with camera,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61387641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com