Search code examples
flutterflutter-local-notification

How to add local image to flutter_local_notifications


I am trying to create push notifications and would like to add an image to the notification. I am able to add images from the web as shown in the screenshot below.

enter image description here

How can I add a local image instead? I tried adding the file path as shown below, but it did not work:

enter image description here


Solution

  • The file path you are adding is a root path of your project but this method needs an android file path(e.g. /storage/emulated/0/Android/data/com.expampe.app/cache/bg.png), so you have to convert your asset image to a File and save it, then return its path:

    import 'dart:async';
    import 'dart:io';
    
    import 'package:flutter/services.dart' show rootBundle;
    import 'package:path_provider/path_provider.dart';
    
    Future<String> getImageFilePathFromAssets(String asset) async {
      final byteData = await rootBundle.load(asset);
    
      final file =
          File('${(await getTemporaryDirectory()).path}/${asset.split('/').last}');
      await file.writeAsBytes(byteData.buffer
          .asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
    
      return file.path;
    }
    

    then just

    final attachmentPicturePath = await getImageFilePathFromAssets('assets/image2.jpg');