0

I am new to Flutter programming and have developed a widget for picking images from the gallery but I could not successfully integrate it with the photo filters plugin and create a method to post it into my app. Please help. The code is a bit jumbled.

import 'dart:io';

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

import 'package:breevie_ui/model/media_source.dart';
import 'package:ionicons/ionicons.dart';
import 'list_tile_widget.dart';

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:path/path.dart';
import 'package:photofilters/photofilters.dart';
import 'package:image/image.dart' as imageLib;
import 'package:image_picker/image_picker.dart';

class GalleryButtonWidget extends StatefulWidget {
  @override
  _GalleryButtonWidgetState createState() => _GalleryButtonWidgetState();
}

class _GalleryButtonWidgetState extends State<GalleryButtonWidget> {
  String fileName;
  List<Filter> filters = presetFiltersList;
  File imageFile;

The code:


  Future getImage(context) async {
    imageFile = await ImagePicker.pickImage(source: ImageSource.gallery);
    fileName = basename(imageFile.path);
    var image = imageLib.decodeImage(imageFile.readAsBytesSync());
    image = imageLib.copyResize(image, width: 600);
    Map imagefile = await Navigator.push(
      context,
      new MaterialPageRoute(
        builder: (context) => new PhotoFilterSelector(
          title: Text("Photo Filter Example"),
          image: image,
          filters: presetFiltersList,
          filename: fileName,
          loader: Center(child: CircularProgressIndicator()),
          fit: BoxFit.contain,
        ),
      ),
    );
    if (imagefile != null && imagefile.containsKey('image_filtered')) {
      setState(() {
        imageFile = imagefile['image_filtered'];
      });
      print(imageFile.path);
    }
  }

  @override
  Widget build(BuildContext context) => ListTileWidget(
        text: 'From Gallery',
        icon: Ionicons.image_outline,
        onClicked: () => pickGalleryMedia(context),
      );

  Future pickGalleryMedia(BuildContext context) async {
    final MediaSource source = ModalRoute.of(context).settings.arguments;

    final getMedia = source == MediaSource.image
        ? ImagePicker().getImage
        : ImagePicker().getVideo;

    final media = await getMedia(source: ImageSource.gallery);
    final file = File(media.path);

The previous method did work.

    Navigator.of(context).pop(file);

The new method I was trying but did not work.

    Navigator.pop(
        context,
        MaterialPageRoute(
            builder: (context) => PhotoFilterSelector(
                title: Text('Halo dudes'),
                filters: filters,
                image: null,
                loader: Center(
                  child: CircularProgressIndicator(),
                ),
                filename: fileName)));
  }
}
Akif
  • 7,098
  • 7
  • 27
  • 53
Vick
  • 1

0 Answers0