Flutter學(xué)習(xí)第九天:實(shí)現(xiàn)拍照峦朗,本地圖片選擇的簡(jiǎn)單Demo實(shí)現(xiàn)。

廢話少說(shuō)排龄,先看一下效果波势,主要功能:
1.可以選擇多張本地圖片
2.可以實(shí)現(xiàn)拍照
3.可以實(shí)現(xiàn)選擇圖片排列
4.可以實(shí)現(xiàn)圖片的刪除


在這里插入圖片描述
在這里插入圖片描述

1.導(dǎo)入依賴

1.依賴如下

image_pickers: ^1.0.8+7

如果先了解更多的功能,可以去看這個(gè)依賴說(shuō)明地址橄维。

2.導(dǎo)入依賴步驟

導(dǎo)入框架前得把build.gradle的版本改為19到29之間尺铣,如圖所示:


在這里插入圖片描述

我使用的軟件為android studio,步驟如下圖:


在這里插入圖片描述

2.所有代碼如下:

import 'dart:io';

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<File> _image=[];

  Future getImage() async {
    List<Media> _listImagePaths = await ImagePickers.pickerPaths(
        galleryMode: GalleryMode.image,
        selectCount: 2,
        showGif: false,
        showCamera: true,
        compressSize: 500,
        uiConfig: UIConfig(uiThemeColor: Color(0xffff0f50)),
        cropConfig: CropConfig(enableCrop: false, width: 2, height: 1));

    setState(() {
      if (_listImagePaths != null) {
        for(int i=0;i<_listImagePaths.length;i++) {
          _image.add(File(_listImagePaths[i].path.toString()));
        }
      } else {
        print('No image selected.');
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Picker Example'),
      ),
      body: Center(
        child:Wrap(
          spacing: 5,
          runSpacing: 5,
          children: _genImages(),
        )
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: getImage,
        tooltip: 'Pick Image',
        child: Icon(Icons.add_a_photo),
      ),
    );
  }


  _genImages() {
    return _image.map((file){
      return Stack(
        children:<Widget> [
          ClipRRect(
            borderRadius:BorderRadius.circular(5),
            child: Image.file(file,width: 90,height: 90,fit: BoxFit.fill,),
          ),Positioned(
            right: 5,
            top: 5,
            child:GestureDetector(
              onTap: (){
                setState(() {
                  _image.remove(file);
                });
              },
              child: ClipOval(
                child: Container(
                  padding: EdgeInsets.all(3),
                  decoration: BoxDecoration(color: Colors.black54),
                  child: Icon(Icons.close,size: 18,color: Colors.white,),
                ),
              ),
            ),
          )
        ],
      );
    }).toList();
  }
}

代碼解析:

繼承的類為StatefulWidget型争舞,因?yàn)榕cUI組件存在交互凛忿,需要使用setState方法,如圖所示:

在這里插入圖片描述

因?yàn)镕lutter的布局格式有點(diǎn)像俄羅斯套娃竞川,所有基本結(jié)構(gòu)如下:
在這里插入圖片描述

組件名 作用
Center 內(nèi)部居中顯示
Wrap 流布局店溢,布局格式和Row表現(xiàn)很像,但Row只能是單行委乌,Wrap可以多行
Stack 把所有的子widget都是重疊放在一起的床牧,一個(gè)與Positioned組件一起使用,通過(guò)絕對(duì)定位來(lái)控制左右上下的距離福澡。
ClipRRectt 通過(guò)borderRadius屬性來(lái)設(shè)置圖片圓角
Image.file 加載本地圖片

依賴的使用:

 List<Media> _listImagePaths = await ImagePickers.pickerPaths(
        galleryMode: GalleryMode.image, 
        selectCount: 2,  
        showGif: false, 
        showCamera: true, 
        compressSize: 500, 
        uiConfig: UIConfig(uiThemeColor: Color(0xffff0f50)), 
        cropConfig: CropConfig(enableCrop: false, width: 2, height: 1));

屬性的作用:

屬性名 作用
galleryMode 選擇 image or video
selectCount 選擇圖片的最大數(shù)量
showCamera 顯示相機(jī)按鈕
cropConfig 裁剪配置,主要對(duì)圖片使用叠赦,對(duì)視頻不可用
compressSize 當(dāng)圖片大小小于compressSize時(shí)將不壓縮
uiConfig 選擇圖片或選擇視頻頁(yè)面的主題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市革砸,隨后出現(xiàn)的幾起案子除秀,更是在濱河造成了極大的恐慌,老刑警劉巖算利,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件册踩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡效拭,警方通過(guò)查閱死者的電腦和手機(jī)暂吉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缎患,“玉大人慕的,你說(shuō)我怎么就攤上這事〖酚妫” “怎么了肮街?”我有些...
    開(kāi)封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)判导。 經(jīng)常有香客問(wèn)我嫉父,道長(zhǎng)沛硅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任绕辖,我火速辦了婚禮摇肌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仪际。我一直安慰自己围小,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布弟头。 她就那樣靜靜地躺著吩抓,像睡著了一般涉茧。 火紅的嫁衣襯著肌膚如雪赴恨。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天伴栓,我揣著相機(jī)與錄音伦连,去河邊找鬼。 笑死钳垮,一個(gè)胖子當(dāng)著我的面吹牛惑淳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饺窿,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼歧焦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了肚医?” 一聲冷哼從身側(cè)響起绢馍,我...
    開(kāi)封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肠套,沒(méi)想到半個(gè)月后舰涌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡你稚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年瓷耙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刁赖。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搁痛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宇弛,到底是詐尸還是另有隱情鸡典,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布涯肩,位于F島的核電站轿钠,受9級(jí)特大地震影響巢钓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疗垛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一症汹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贷腕,春花似錦背镇、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至涮总,卻和暖如春胸囱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瀑梗。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工烹笔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抛丽。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓谤职,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親亿鲜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子允蜈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 輪子是IT進(jìn)步的階梯!熱門的框架千篇一律蒿柳,好用輪子萬(wàn)里挑一饶套!下面是Flutter中拍照和圖片選擇的功能。 核心知識(shí)...
    翀鷹精靈閱讀 3,387評(píng)論 0 4
  • 廢話少說(shuō)其馏,本文分四個(gè)部分凤跑,css、js叛复、知識(shí)點(diǎn)一仔引、知識(shí)點(diǎn)二、React(部分問(wèn)題沒(méi)有給出答案褐奥,后續(xù)更新) css面...
    666同學(xué)閱讀 1,096評(píng)論 0 0
  • 一咖耘、Unity簡(jiǎn)介 1. Unity界面 Shift + Space : 放大界面 Scene界面按鈕渲染模式2D...
    MYves閱讀 8,203評(píng)論 0 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友撬码。感恩相遇儿倒!感恩不離不棄。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,562評(píng)論 0 11
  • 彩排完夫否,天已黑
    劉凱書法閱讀 4,212評(píng)論 1 3