openplanning

Hướng dẫn và ví dụ Flutter image_picker

  1. Cài đặt thư viện
  2. Ví dụ đơn giản
  3. Các bài viết liên quan
Flutter image_picker là một thư viện cho phép bạn chọn ảnh từ thư viện hoặc ảnh được chụp một cách trực tiếp thông qua Camera.
Trong thực tế, image_picker cho phép bạn làm nhiều hơn so với cái tên của nó, cụ thể nó cũng cho phép bạn chọn video từ thư viện hoặc trực tiếp từ Camera.
  • Hướng dẫn và ví dụ Flutter file_picker
  • Flutter crop_image
final ImagePicker picker = ImagePicker();

// Pick an image.
final XFile? image = await picker.pickImage(source: ImageSource.gallery);
// Capture a photo.
final XFile? photo = await picker.pickImage(source: ImageSource.camera);

// Pick a video.
final XFile? galleryVideo =
    await picker.pickVideo(source: ImageSource.gallery);
// Capture a video.
final XFile? cameraVideo = await picker.pickVideo(source: ImageSource.camera);

// Pick multiple images.
final List<XFile> images = await picker.pickMultiImage();

// Pick singe image or video.
final XFile? media = await picker.pickMedia();
// Pick multiple images and videos.
final List<XFile> medias = await picker.pickMultipleMedia();

1. Cài đặt thư viện

pubspec.yaml
dependencies:
  image_picker:  

2. Ví dụ đơn giản

Trường hợp sử dụng thông dụng nhất của ImagePicker là cho phép người dùng lựa chọn một hình ảnh từ Galary.
Cách ImagePicker hoạt động trên Web.
Cách hoạt động của ImagePicker trên Android:
Trong ví dụ này chúng ta sẽ sử dụng ImagePicker để lựa chọn một hình ảnh trong Gallery và hiển thị hình ảnh này thông qua constructor Image.memory().
main_ex1.dart
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final ImagePicker picker = ImagePicker();
  Uint8List? imageBytes;
  String? name; // Image Name
  String? path; // Image Path

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('Flutter ImagePicker Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(5),
        child: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Container(
                height: 200,
                width: 320,
                padding: const EdgeInsets.all(5),
                decoration: BoxDecoration(
                  border: Border.all(
                    color: Colors.indigo.withAlpha(30),
                  ),
                ),
                child: imageBytes == null
                    ? const SizedBox()
                    : Image.memory(imageBytes!),
              ),
              const SizedBox(height: 5),
              Text('name: $name'),
              const SizedBox(height: 5),
              Text('path: $path'),
              const SizedBox(height: 5),
              ElevatedButton.icon(
                icon: const Icon(Icons.image),
                label: const Text('Select an Image'),
                onPressed: selectImage,
              ),
            ],
          ),
        ),
      ),
    );
  }

  Future<void> selectImage() async {
    XFile? xFile = await picker.pickImage(source: ImageSource.gallery);
    if (xFile == null) {
      return;
    }
    imageBytes = await xFile.readAsBytes();
    name = xFile.name;
    path = xFile.path;
    setState(() {});
  }
}

3. Các bài viết liên quan

  • Flutter upload ảnh sử dụng Dio và ImagePicker

Các hướng dẫn lập trình Flutter

Show More