allow for custom parameters when sending a screenView
diff --git a/lib/src/usage_impl.dart b/lib/src/usage_impl.dart
index cb92972..563f14e 100644
--- a/lib/src/usage_impl.dart
+++ b/lib/src/usage_impl.dart
@@ -123,8 +123,11 @@
properties['enabled'] = value;
}
- Future sendScreenView(String viewName) {
+ Future sendScreenView(String viewName, { Map<String, String> parameters }) {
Map<String, dynamic> args = {'cd': viewName};
+ if (parameters != null) {
+ args.addAll(parameters);
+ }
return _sendPayload('screenview', args);
}
diff --git a/lib/usage.dart b/lib/usage.dart
index dfdc54b..8e5a808 100644
--- a/lib/usage.dart
+++ b/lib/usage.dart
@@ -77,8 +77,11 @@
/**
* Sends a screen view hit to Google Analytics.
+ *
+ * [parameters] can be any analytics key/value pair. Useful
+ * for custom dimensions, etc.
*/
- Future sendScreenView(String viewName);
+ Future sendScreenView(String viewName, { Map<String, String> parameters });
/**
* Sends an Event hit to Google Analytics. [label] specifies the event label.
@@ -236,8 +239,13 @@
@override
String get clientId => '00000000-0000-4000-0000-000000000000';
- Future sendScreenView(String viewName) =>
- _log('screenView', {'viewName': viewName});
+ Future sendScreenView(String viewName, { Map<String, String> parameters }) {
+ if (parameters == null) {
+ parameters = <String, String>{};
+ }
+ parameters['viewName'] = viewName;
+ _log('screenView', parameters);
+ }
Future sendEvent(String category, String action, {String label, int value}) {
return _log('event', {
diff --git a/test/usage_test.dart b/test/usage_test.dart
index 8c4cedb..6137a29 100644
--- a/test/usage_test.dart
+++ b/test/usage_test.dart
@@ -14,6 +14,7 @@
test('simple', () {
AnalyticsMock mock = new AnalyticsMock();
mock.sendScreenView('main');
+ mock.sendScreenView('withParameters', parameters: {'cd1': 'custom'});
mock.sendEvent('files', 'save');
mock.sendSocial('g+', 'plus', 'userid');
mock.sendTiming('compile', 123);