_genImage()返回null 不是视频中的那个问题!

来源:6-16 拍照APP开发-图片获取与图片展示【实战尝鲜】

月风

2019-06-28

图片描述

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io';
class PhotoApp extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<PhotoApp> {
  List<File> _images;

  Future getImage(bool isTakePhoto) async {
    Navigator.pop(context);
    var image = await ImagePicker.pickImage(source: isTakePhoto?ImageSource.camera:ImageSource.gallery);
   
    setState(() {
      if(image!=null){
        _images.add(image);
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Picker Example'),
      ),
      body: Center(
        child: Wrap(
          spacing: 5,
          runSpacing: 5,
          children: _genImage(),
        )
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _pickImage,
        tooltip: '选择图片',
        child: Icon(Icons.add_a_photo),
      ),
    );
  }
  _pickImage(){
    showModalBottomSheet(context: context,builder: (context)=>Container(
      height: 160,
      child: Column(
        children: <Widget>[
          _item('拍照',true),
          _item('从相册选择',false)
        ],
      ),
    ));
  }
  _item(String title, bool isTakePhoto){
      return GestureDetector(
        child: ListTile(
          leading: Icon(isTakePhoto?Icons.camera_alt:Icons.photo),
          title: Text(title),
          onTap: ()=>getImage(isTakePhoto),
        ),
      );
  }
  _genImage(){
    return _images.map((file){
      return Stack(
        children: <Widget>[
          ClipRRect(
            borderRadius: BorderRadius.circular(5),
            child: Image.file(file,width: 120,height: 90,fit:BoxFit.fill),
          ),
          Positioned(
            right: 5,
            left: 5,
            child: GestureDetector(
              onTap: (){
                setState(() {
                   _images.remove(file);               
                });
              },
              child: ClipOval(
                child: Container(
                  padding: EdgeInsets.all(3),
                  decoration: BoxDecoration(color: Colors.black45),
                  child: Icon(Icons.close,size:18,color: Colors.white),
                ),
              ),
            ),
          )
        ],
      );
    }).toList();
  }
}
写回答

2回答

CrazyCodeBoy

2019-06-28

List<File> _images没有初始化导致的

1
1
月风
多谢老师,看来是我dart基础没学好
2019-06-29
共1条回复

网络首席管理监察官

2019-07-10

瞅瞅看我也遇到了

1
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3274 问题

查看课程