Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

I keep getting Instance of SongEntity in my firebase project

Im trying to fetch a list of songs from firebase and add them all to a list of songs

Code for the SongEntity

import 'package:cloud_firestore/cloud_firestore.dart';

class SongEntity {
  final String songId;
  final String title;
  final String artist;
  final String link;
  final String imageUrl;

  SongEntity({
    required this.songId,
    required this.title,
    required this.artist,
    required this.link,
    required this.imageUrl,
  });

  factory SongEntity.fromDocument(DocumentSnapshot doc) {
    final data = doc.data() as Map<String, dynamic>;
    return SongEntity(
      songId: doc.id,
      title: data['title'],
      artist: data['artist'],
      link: data['link'],
      imageUrl: data['image'],
    );
  }
}
 

Code for the PlaylistProvider class that has the function to get the songs from firestore

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

import '../../../domain/entities/song_entities/song_entity.dart';

class PlaylistProvider with ChangeNotifier {
  List<SongEntity> _songs = [];

  List<SongEntity> get songs => _songs;

  getPlaylistFromFirestore(String collectionName, String playlistName) async {
    final fireStore = FirebaseFirestore.instance;
    await fireStore.collection(collectionName).get().then(
      (querySnapshot) {
        for (var docSnapshot in querySnapshot.docs) {
          print('${docSnapshot.id} => ${docSnapshot.data()['artist']}');
          _songs.add(SongEntity.fromDocument(docSnapshot));
          notifyListeners();
        }
      },
      onError: (e) => print("Error completing: $e"),
    );
  }
}

This part of the code works perfectly and all documents are printed out

  print('${docSnapshot.id} => ${docSnapshot.data()['artist']}');

But when i try to print the value of songs from my homepage

    print(Provider.of<PlaylistProvider>(context).songs);

I get this in console

I/flutter (10936): [Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’, Instance of ‘SongEntity’]

Any help will be greatly appreciated

>Solution :

Since you’re printing the list of songs, it executes the toString of your SongEntity class – which defaults to the output you see.

If you want to show a different output, override the toString method in your SongEntity class. For example, like this:

class SongEntity {
  ...
  @override
  String toString() {
    return 'SongEntity(songId: $songId, title: $title, artist: $artist, link: $link, imageUrl: $imageUrl)';
  }
}

For a good explanation of toString, see What does @override toString method do in a Flutter Dart class?

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading