Сбой приложения Flutter при попытке отобразить более 10 изображений - PullRequest
0 голосов
/ 08 ноября 2019

Я пишу свое первое приложение Flutter. Приложение позволяет пользователю делать несколько изображений (от 1 до 50+) и отображать каждое изображение на экране одновременно с помощью ListView.

Проблема, с которой я столкнулся, заключается в том, что приложение падает примерно после 10/ 12 изображений на Samsung SM A520F, полагаю, это связано с тем, что это не очень мощное устройство.

Есть ли способ отобразить миниатюру изображения вместо загрузки в полном размере? image?

Сообщение об ошибке: я не получаю никаких сообщений об ошибках, приложение просто перезагружается!

Вот мой код

import 'package:flutter/material.dart';
import 'package:myapp/utilities/app_constants.dart';
import 'package:image_picker/image_picker.dart';
import 'dart:io';
import 'package:gallery_saver/gallery_saver.dart';

class FormCameraField extends StatefulWidget {
  final InputDecoration decorations;
  final Map field;
  // functions
  final Function onSaved;
  final Function onFieldSubmitted;

  FormCameraField({
    this.decorations,
    @required this.field,
    @required this.onSaved,
    @required this.onFieldSubmitted,
  });

  @override
  _FormCameraFieldState createState() => _FormCameraFieldState();
}

class _FormCameraFieldState extends State<FormCameraField> {
  List<File> images = [];

  Future<void> _takePhoto(ImageSource source) async {
    ImagePicker.pickImage(source: source, imageQuality: 90).then(
      (File recordedImage) async {
        if (recordedImage != null && recordedImage.path != null) {
          try {
            // store image to device gallery
            if (widget.field["StoreCaptureToDevice"] == true) {
              GallerySaver.saveImage(recordedImage.path,
                  albumName: kAppName.replaceAll(" ", "_"));
            }

            setState(() {
              images.add(recordedImage);
            });
          } catch (e) {
            print("ERROR SAVING THE FILE TO GALLERY");
            print(e);
          }
        }
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Row(
          children: <Widget>[
            Expanded(
              child: MaterialButton(
                child: Text("Take Photo"),
                onPressed: () async {
                  await _takePhoto(ImageSource.camera);
                },
              ),
            ),
            Expanded(
              child: MaterialButton(
                child: Text("Select Photo"),
                onPressed: () async {
                  await _takePhoto(ImageSource.gallery);
                },
              ),
            ),
          ],
        ),
        ListView.builder(
          shrinkWrap: true,
          physics: ClampingScrollPhysics(),
          itemCount: images.length,
          itemBuilder: (BuildContext context, index) {
            return Container(
              child: Image.file(
                images[index],
              ),
            );
          },
        )
      ],
    );
  }
}


1 Ответ

0 голосов
/ 12 ноября 2019

Схожая проблема. Замена моих изображений на более мелкие (~ 50 КБ), кажется, работает нормально, поэтому я думаю, что вы правы, загрузка всех этих изображений на менее мощные устройства, похоже, является проблемой. Существует пакет image на pub.dev , который должен сделать свое дело. Я использую Firebase, поэтому я буду больше склоняться к их новому расширению изображения. Goodluck и дайте нам знать, если это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...