diff --git a/lib/src/strings.dart b/lib/src/strings.dart
index 6f7a155..515b814 100644
--- a/lib/src/strings.dart
+++ b/lib/src/strings.dart
@@ -279,7 +279,9 @@
       final formattedValue =
           yamlEncodeBlockString(entry.value, newIndentation, lineEnding);
 
-      if (isCollection(entry.value)) {
+      /// Empty collections are always encoded in flow-style, so new-line must
+      /// be avoided
+      if (isCollection(entry.value) && !isEmpty(entry.value)) {
         return formattedKey + ':\n' + formattedValue;
       }
 
diff --git a/test/update_test.dart b/test/update_test.dart
index 23b0023..24f9530 100644
--- a/test/update_test.dart
+++ b/test/update_test.dart
@@ -12,8 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-import 'package:yaml_edit/yaml_edit.dart';
 import 'package:test/test.dart';
+import 'package:yaml/yaml.dart';
+import 'package:yaml_edit/yaml_edit.dart';
 
 import 'test_utils.dart';
 
@@ -864,6 +865,94 @@
 '''));
         expectYamlBuilderValue(doc, {'a': 1, 'b': 2, 'c': 3, 'd': 4});
       });
+
+      test('adds an empty map properly', () {
+        final doc = YamlEditor('a: b');
+        doc.update(['key'], {});
+        expectYamlBuilderValue(doc, {'a': 'b', 'key': {}});
+      });
+
+      test('adds an empty map properly (2)', () {
+        final doc = YamlEditor('a: b');
+        doc.update(['a'], {'key': {}});
+        expectYamlBuilderValue(doc, {
+          'a': {'key': {}}
+        });
+      });
+    });
+
+    group('empty starting document', () {
+      test('empty map', () {
+        final doc = YamlEditor('');
+        doc.update([], {'key': {}});
+        expectYamlBuilderValue(doc, {'key': {}});
+      });
+
+      test('empty map (2)', () {
+        final doc = YamlEditor('');
+        doc.update([], {});
+        expectYamlBuilderValue(doc, {});
+      });
+
+      test('empty map (3)', () {
+        final doc = YamlEditor('');
+        doc.update(
+          [],
+          wrapAsYamlNode(
+            {'key': {}},
+            collectionStyle: CollectionStyle.BLOCK,
+          ),
+        );
+        expectYamlBuilderValue(doc, {'key': {}});
+      });
+
+      test('empty map (4)', () {
+        final doc = YamlEditor('');
+        doc.update(
+          [],
+          wrapAsYamlNode(
+            {},
+            collectionStyle: CollectionStyle.BLOCK,
+          ),
+        );
+        expectYamlBuilderValue(doc, {});
+      });
+
+      test('empty list', () {
+        final doc = YamlEditor('');
+        doc.update([], {'key': []});
+        expectYamlBuilderValue(doc, {'key': []});
+      });
+
+      test('empty list (2)', () {
+        final doc = YamlEditor('');
+        doc.update([], []);
+        expectYamlBuilderValue(doc, []);
+      });
+
+      test('empty list (3)', () {
+        final doc = YamlEditor('');
+        doc.update(
+          [],
+          wrapAsYamlNode(
+            {'key': []},
+            collectionStyle: CollectionStyle.BLOCK,
+          ),
+        );
+        expectYamlBuilderValue(doc, {'key': []});
+      });
+
+      test('empty map (4)', () {
+        final doc = YamlEditor('');
+        doc.update(
+          [],
+          wrapAsYamlNode(
+            [],
+            collectionStyle: CollectionStyle.BLOCK,
+          ),
+        );
+        expectYamlBuilderValue(doc, []);
+      });
     });
   });
 }
diff --git a/test/wrap_test.dart b/test/wrap_test.dart
index 3aed89c..50dc2da 100644
--- a/test/wrap_test.dart
+++ b/test/wrap_test.dart
@@ -329,8 +329,8 @@
     });
 
     test(
-        'returns the same result for two YamlMaps with same value but different styles',
-        () {
+        'returns the same result for two YamlMaps with same value but '
+        'different styles', () {
       final hashCode1 = deepHashCode(wrapAsYamlNode({'a': 1, 'b': 2},
           collectionStyle: CollectionStyle.BLOCK));
       final hashCode2 = deepHashCode(wrapAsYamlNode({'a': 1, 'b': 2},
