diff --git a/public/dart/fuchsia_inspect/examples/inspect_mod/lib/src/inspect_example_app.dart b/public/dart/fuchsia_inspect/examples/inspect_mod/lib/src/inspect_example_app.dart
index 3b6a34a..273c5c3 100644
--- a/public/dart/fuchsia_inspect/examples/inspect_mod/lib/src/inspect_example_app.dart
+++ b/public/dart/fuchsia_inspect/examples/inspect_mod/lib/src/inspect_example_app.dart
@@ -30,7 +30,7 @@
 
   /// Initializes the [Inspect] metrics for this widget.
   void _initMetrics() {
-    _inspectNode.createStringProperty('app-color').value = '$_appColor';
+    _inspectNode.createStringProperty('app-color', value: '$_appColor');
   }
 }
 
@@ -39,7 +39,7 @@
   final inspect.Node inspectNode;
 
   _InspectHomePage({Key key, this.title, this.inspectNode}) : super(key: key) {
-    inspectNode.createStringProperty('title').value = title;
+    inspectNode.createStringProperty('title', value: title);
   }
 
   @override
@@ -62,8 +62,8 @@
   int _colorIndex = 0;
 
   _InspectHomePageState(this._inspectNode) {
-    _backgroundProperty = _inspectNode.createStringProperty('background-color')
-      ..value = '$_backgroundColor';
+    _backgroundProperty = _inspectNode.createStringProperty('background-color',
+        value: '$_backgroundColor');
   }
 
   Color get _backgroundColor => _colors[_colorIndex];
diff --git a/public/dart/fuchsia_inspect/lib/src/inspect/node.dart b/public/dart/fuchsia_inspect/lib/src/inspect/node.dart
index 473127f..d51384d 100644
--- a/public/dart/fuchsia_inspect/lib/src/inspect/node.dart
+++ b/public/dart/fuchsia_inspect/lib/src/inspect/node.dart
@@ -28,17 +28,35 @@
 
   /// Creates a [StringProperty] with [name] on this node.
   ///
+  /// Optionally sets the [value], if specified.
+  ///
   /// Does not check whether the property already exists. This method is not
   /// idempotent and calling it multiple times with the same [name] will
   /// create multiple [StringProperty]s.
-  StringProperty createStringProperty(String name) =>
-      StringProperty._(name, index, _writer);
+  StringProperty createStringProperty(String name, {String value}) {
+    var property = StringProperty._(name, index, _writer);
+
+    if (value != null) {
+      property.value = value;
+    }
+
+    return property;
+  }
 
   /// Creates a [ByteDataProperty] with [name] on this node.
   ///
+  /// Optionally sets the [value], if specified.
+  ///
   /// Does not check whether the property already exists. This method is not
   /// idempotent and calling it multiple times with the same [name] will
   /// create multiple [ByteDataProperty]s.
-  ByteDataProperty createByteDataProperty(String name) =>
-      ByteDataProperty._(name, index, _writer);
+  ByteDataProperty createByteDataProperty(String name, {ByteData value}) {
+    var property = ByteDataProperty._(name, index, _writer);
+
+    if (value != null) {
+      property.value = value;
+    }
+
+    return property;
+  }
 }
diff --git a/public/dart/fuchsia_inspect/test/inspect/property_test.dart b/public/dart/fuchsia_inspect/test/inspect/property_test.dart
index 55486d6..b533fcb 100644
--- a/public/dart/fuchsia_inspect/test/inspect/property_test.dart
+++ b/public/dart/fuchsia_inspect/test/inspect/property_test.dart
@@ -25,7 +25,7 @@
 
   group('String properties', () {
     test('are written to the VMO when the value is set', () {
-      var property = node.createStringProperty('color')..value = 'fuchsia';
+      var property = node.createStringProperty('color', value: 'fuchsia');
 
       expect(readProperty(vmo, property.index),
           equalsByteData(toByteData('fuchsia')));
@@ -72,14 +72,14 @@
   group('ByteData properties', () {
     test('are written to the VMO when the value is set', () {
       var bytes = toByteData('fuchsia');
-      var property = node.createByteDataProperty('color')..value = bytes;
+      var property = node.createByteDataProperty('color', value: bytes);
 
       expect(readProperty(vmo, property.index), equalsByteData(bytes));
     });
 
     test('can be mutated', () {
       var pancakes = toByteData('pancakes');
-      var property = node.createByteDataProperty('breakfast')..value = pancakes;
+      var property = node.createByteDataProperty('breakfast', value: pancakes);
 
       expect(readProperty(vmo, property.index), equalsByteData(pancakes));
 
