Flutter实现相机拍照和相册选择

Flutter实现相机拍照和相册选择

添加image_picker依赖:https://pub.dev/packages/image_picker/install

// ignore_for_file: prefer_const_constructors, unnecessary_this, avoid_print

import 'dart:async';
import 'dart:html';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:dio/dio.dart';

class ImagePickerPage extends StatefulWidget {
    
    
  ImagePickerPage({
    
    Key? key}) : super(key: key);

  @override
  State<ImagePickerPage> createState() => _ImagePickerPageState();
}

class _ImagePickerPageState extends State<ImagePickerPage> {
    
    
  final picker = ImagePicker();
  XFile? _imageFile;

  @override
  Widget build(BuildContext context) {
    
    
    return Scaffold(
      appBar: AppBar(
        title: const Text("ImagePicker"),
      ),
      body: Center(
        child: Column(
          children: [
            ElevatedButton(onPressed: _takePhoto, child: const Text("拍照")),
            ElevatedButton(onPressed: _openGallery, child: const Text("打开相册")),
            this._imageFile == null
                ? Text("请选择图片")
                : Image.file(File(_imageFile!.path))
          ],
        ),
      ),
    );
  }
 //拍照
  _takePhoto() async {
    
    
    XFile? pickedFile = await picker.pickImage(
        source: ImageSource.camera, maxHeight: 600, maxWidth: 600);

    if (pickedFile != null) {
    
    
      print(pickedFile.path);
      print(File(pickedFile.path));
      setState(() {
    
    
        _imageFile = pickedFile;
      });
    }
  }
    //打开文件夹
  _openGallery() async {
    
    
    XFile? pickedFile = await picker.pickImage(
        source: ImageSource.gallery, maxHeight: 600, maxWidth: 600);

    if (pickedFile != null) {
    
    
      print(pickedFile.path);
      print(File(pickedFile.path));
      setState(() {
    
    
        _imageFile = pickedFile;
      });
    }
  }


}

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述

猜你喜欢

转载自blog.csdn.net/m0_46527751/article/details/123194597