IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter 图片选取 image_picker -> 正文阅读

[移动开发]Flutter 图片选取 image_picker

image_picker: Flutter 照片选取插件; 该老版本插件需要兼容 AndroidX, 如果是老版本 可以参照这边的进行配置!

flutter 官方androidx 兼容设置https://flutter.dev/docs/development/androidx-migrationhttps://flutter.dev/docs/development/androidx-migrationIOS 需要配置? .plist? 权限 (老版本和新版本都需要)

image_picker | Flutter PackageFlutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.https://pub.flutter-io.cn/packages/image_pickerpubspec.yaml:

dev_dependencies:
  flutter_test:
    sdk: flutter
  image_picker: ^0.8.4+1

?

?

引入插件的头文件
import 'package:image_picker/image_picker.dart';
  List<File> imgArray = [];
  final ImagePicker _picker = ImagePicker();
  Future pickImage({required ImageSource type}) async {
    Navigator.pop(context);
    var image = await _picker.pickImage(source: type);
    // List<File> cacheList = [];
    // // for (int i = 0; i < imgArray.length; i++) {
    // //   cacheList.add(imgArray[i]);
    // // }
    // cacheList.addAll(imgArray);
    // cacheList.add(File(image!.path));
    setState(() {
      imgArray.add(File(image!.path));
      //imgArray = cacheList;
      // _image = _image;
      // imgArray = imgArray.add(image!.path);
      // print('_image.path ${_image!.path}');
    });
  }

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

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

class _PhotoSelectState extends State<PhotoSelect> {
  List<File> imgArray = [];
  final ImagePicker _picker = ImagePicker();
  Future pickImage({required ImageSource type}) async {
    Navigator.pop(context);
    var image = await _picker.pickImage(source: type);
    // List<File> cacheList = [];
    // // for (int i = 0; i < imgArray.length; i++) {
    // //   cacheList.add(imgArray[i]);
    // // }
    // cacheList.addAll(imgArray);
    // cacheList.add(File(image!.path));
    setState(() {
      imgArray.add(File(image!.path));
      //imgArray = cacheList;
      // _image = _image;
      // imgArray = imgArray.add(image!.path);
      // print('_image.path ${_image!.path}');
    });
  }

  @override
  Widget build(BuildContext context) {
    String title = (ModalRoute.of(context)!.settings.arguments as Map)['desc'];
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: Stack(
        children: [
          Positioned(
            right: 10,
            bottom: 20,
            child: SizedBox(
              width: 50,
              height: 50,
              child: ClipOval(
                child: Container(
                  color: Colors.blue,
                  child: IconButton(
                    color: Colors.white,
                    onPressed: _showSheetAction,
                    icon: Icon(
                      Icons.photo_camera,
                      size: 30,
                    ),
                  ),
                ),
              ),
            ),
          ),
          Center(
            child: imgArray.length > 0
                ? Wrap(
                    spacing: 5,
                    runSpacing: 5,
                    children: imgArray
                        .map((item) => _imageItem(imagePth: item))
                        .toList(),
                  )
                : Text('您还没有添加图片'),
          )
        ],
      ),
    );
  }

  Widget _imageItem({required File imagePth}) {
    return Stack(
      children: [
        ClipRRect(
          borderRadius: BorderRadius.circular(7),
          child: Image.file(
            imagePth,
            width: 110,
            height: 70,
            fit: BoxFit.fitWidth,
          ),
        ),
        Positioned(
          right: 5,
          top: 5,
          child: GestureDetector(
            onTap: () {
              //print('点击了删除');
              // List<File> cacheList = [];
              // cacheList.addAll(imgArray);
              // cacheList.remove(imagePth);
              setState(() {
                imgArray.remove(imagePth);
              });
            },
            child: ClipOval(
              child: Container(
                color: Colors.white.withOpacity(0.7),
                width: 20,
                height: 20,
                child: Icon(
                  Icons.close,
                  size: 20,
                ),
              ),
            ),
          ),
        ),
      ],
    );
  }

  _showSheetAction() {
    showModalBottomSheet(
        context: context,
        builder: (context) => Container(
            height: 120,
            child: Column(
              children: [
                Expanded(
                  child: FlatButton(
                      onPressed: () {
                        pickImage(type: ImageSource.camera);
                      },
                      child: Container(
                        width: double.infinity,
                        height: double.infinity - 20,
                        child: Center(
                          child: Text('拍照'),
                        ),
                      )),
                ),
                Divider(
                  height: 5,
                ),
                Expanded(
                  child: FlatButton(
                      onPressed: () {
                        pickImage(type: ImageSource.gallery);
                      },
                      child: Container(
                        width: double.infinity,
                        height: double.infinity - 20,
                        color: Colors.white24,
                        child: Center(
                          child: Text('从相册选取'),
                        ),
                      )),
                )
              ],
            )));
  }
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:50:06  更:2021-11-14 21:50:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:46:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码