Как открыть галерею телефона, камеру или любой другой доступный носитель с помощью ImagePicker во Flutter.?

#flutter #flutter-dependencies

#трепетать #зависимости от флаттера #flutter

Вопрос:

Мне нужна некоторая помощь относительно плагина выбора изображений во flutter. Я хочу, чтобы пользователи могли выбирать изображения из любого места, например, с камеры, галереи, Google диска / фото или из любого другого места, а не только из одного варианта.

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

class UserImagePicker extends StatefulWidget {
  @override
  _UserImagePickerState createState() => _UserImagePickerState();
}

class _UserImagePickerState extends State<UserImagePicker> {
  File _pickedImage;

  void _pickImage() async {
    final pickedImageFile =
        await ImagePicker().getImage(source: ImageSource.gallery);
    setState(() {
      _pickedImage = File(pickedImageFile.path);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        CircleAvatar(
          radius: 40,
          backgroundColor: Colors.grey,
          backgroundImage:
              _pickedImage != null ? FileImage(_pickedImage) : null,
        ),
        FlatButton.icon(
          textColor: Theme.of(context).primaryColor,
          onPressed: _pickImage,
          icon: Icon(Icons.image),
          label: Text('Add Image'),
        ),
      ],
    );
  }
}
  

Ответ №1:

Вот ваша доработка _pickedImage , позволяющая отображать диалоговое окно оповещения, чтобы пользователь мог выбрать источник своего изображения.

 void _pickedImage() {
   showDialog<ImageSource>(
      context: context,
      builder: (context) => AlertDialog(
         content: Text("Choose image source"),
         actions: [
            FlatButton(
               child: Text("Camera"), 
               onPressed: () => Navigator.pop(context, ImageSource.camera),
            ),
            FlatButton(
               child: Text("Gallery"), 
               onPressed: () => Navigator.pop(context, ImageSource.gallery),
            ),
         ]
      ),
   ).then((ImageSource source) async {
      if (source != null) {
         final pickedFile = await ImagePicker().getImage(source: source);
         setState(() => _pickedImage = File(pickedFile.path));
      }
  });
}
  

Комментарии:

1. Здесь у меня небольшая проблема. передается только изображение, выбранное источником камеры, а не изображение из галереи. что мне делать?