aboutsummaryrefslogtreecommitdiff
path: root/lib/widgets/avatar_picker.dart
blob: bdfec6d5e6cb58ef988941482d3fdf1dd35f0451 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import 'dart:io';

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

class AvatarPicker extends StatelessWidget {
  final ImagePicker picker = ImagePicker();
  final XFile? avatar;
  final Function(XFile? avatar) onAvatarPicked;

  AvatarPicker({
    super.key,
    required this.avatar,
    required this.onAvatarPicked,
  });

  File? _getAvatarFile() {
    return avatar == null ? null : File(avatar!.path);
  }

  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        CircleAvatar(
          radius: 50.0,
          backgroundImage:
              _getAvatarFile() == null ? null : FileImage(_getAvatarFile()!),
          child: _getAvatarFile() == null
              ? const Icon(Icons.person, size: 50.0)
              : null,
        ),
        const SizedBox(width: 18.0),
        Column(
          children: [
            FilledButton.icon(
              icon: const Icon(Icons.camera_alt),
              label: const Text('Cámara'),
              onPressed: () {
                picker.pickImage(source: ImageSource.camera).then((image) {
                  onAvatarPicked(image);
                });
              },
            ),
            const SizedBox(height: 16.0),
            FilledButton.icon(
              icon: const Icon(Icons.collections),
              label: const Text('Galería'),
              onPressed: () {
                picker.pickImage(source: ImageSource.gallery).then((image) {
                  onAvatarPicked(image);
                });
              },
            )
          ],
        )
      ],
    );
  }
}