diff --git a/example/test.dart b/example/test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..ea79542418cb5a4053ba0a15aaadda7fc480e4d8
--- /dev/null
+++ b/example/test.dart
@@ -0,0 +1,16 @@
+import 'package:minio/minio.dart';
+
+void main() async {
+  final minio = Minio(
+    endPoint: 'play.min.io',
+    accessKey: 'Q3AM3UQ867SPQQA43P2F',
+    secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
+    useSSL: true,
+    // enableTrace: true,
+  );
+
+  // await minio.makeBucket('test00');
+  await minio.putObject('test00', 'new folder/a.txt', Stream.value([1, 2, 3]));
+  await minio.putObject('test00', 'new folder/b.txt', Stream.value([1, 2, 3]));
+  print(await minio.listAllObjects('test00', prefix: 'new folder/'));
+}
diff --git a/lib/src/minio_models.dart b/lib/src/minio_models.dart
index f97abaeb7334e358fe1b64ff977161db71326dff..030ec80ae4c39c5ceb3df5a1391492c032e46ae7 100644
--- a/lib/src/minio_models.dart
+++ b/lib/src/minio_models.dart
@@ -19,7 +19,7 @@ class ListObjectsResult {
 
   @override
   String toString() {
-    return 'ListObjectsChunk{objects: $objects, prefixes: $prefixes}';
+    return '$runtimeType{objects: $objects, prefixes: $prefixes}';
   }
 }
 
diff --git a/test/minio_test.dart b/test/minio_test.dart
index 481220aa1d2c5c9ec87fa5f6a5c67b56ac8d96c7..0cde5e72dc97b5e827e626f4de963672b346c63c 100644
--- a/test/minio_test.dart
+++ b/test/minio_test.dart
@@ -25,6 +25,7 @@ void main() {
   testMakeBucket();
   testRemoveBucket();
   testRemoveObject();
+  testListObjects();
 }
 
 void testConstruct() {
@@ -91,17 +92,6 @@ void testListBuckets() {
     await minio.removeBucket(bucketName2);
   });
 
-  test('listBuckets() can list buckets with spaces in name', () async {
-    final minio = getMinioClient();
-    final bucketName = uniqueName() + '  folder';
-    await minio.makeBucket(bucketName);
-
-    final buckets = await minio.listBuckets();
-    expect(buckets.any((b) => b.name == bucketName), isTrue);
-
-    await minio.removeBucket(bucketName);
-  });
-
   test('listBuckets() fails due to wrong access key', () async {
     final minio = getMinioClient(accessKey: 'incorrect-access-key');
 
@@ -619,3 +609,57 @@ void testRemoveObject() {
     });
   });
 }
+
+void testListObjects() {
+  group('listAllObjects()', () {
+    final minio = getMinioClient();
+    final bucketName = uniqueName();
+    final objectName = uniqueName();
+    final data = [1, 2, 3, 4, 5];
+
+    setUpAll(() async {
+      await minio.makeBucket(bucketName);
+      await minio.putObject(bucketName, objectName, Stream.value(data));
+    });
+
+    tearDownAll(() async {
+      await minio.removeObject(bucketName, objectName);
+      await minio.removeBucket(bucketName);
+    });
+
+    test('succeeds', () async {
+      final result = await minio.listAllObjects(bucketName);
+      expect(result.objects.map((e) => e.key).contains(objectName), isTrue);
+    });
+
+    test('fails on invalid bucket', () {
+      expect(
+        () async => await minio.listAllObjects('$bucketName-invalid'),
+        throwsA(isA<MinioError>()),
+      );
+    });
+  });
+
+  group('listAllObjects() works when prefix contains spaces', () {
+    final minio = getMinioClient();
+    final bucket = uniqueName();
+    final object = 'new  folder/new file.txt';
+    final data = [1, 2, 3, 4, 5];
+
+    setUpAll(() async {
+      await minio.makeBucket(bucket);
+      await minio.putObject(bucket, object, Stream.value(data));
+    });
+
+    tearDownAll(() async {
+      await minio.removeObject(bucket, object);
+      await minio.removeBucket(bucket);
+    });
+
+    test('succeeds', () async {
+      final result = await minio.listAllObjects(bucket, prefix: 'new  folder/');
+      print(result);
+      expect(result.objects.map((e) => e.key).contains(object), isTrue);
+    });
+  });
+}