Skip to main content

WebView SDK Manager Reference

API documentation for the WebViewSdkManager class.

Constructor

WebViewSdkManager({
Environment environment = Environment.DEV,
@Deprecated('Basic auth removed in v1.1.0 — use Firebase custom tokens')
String? basicAuthUser,
@Deprecated('Basic auth removed in v1.1.0 — use Firebase custom tokens')
String? basicAuthPass,
void Function(String, dynamic)? updateCallback,
})
ParameterTypeDescription
environmentEnvironmentEnvironment enum: Environment.DEV (default), .UAT, or .PRD
basicAuthUserString?Deprecated — No longer used. Will be removed in a future version.
basicAuthPassString?Deprecated — No longer used. Will be removed in a future version.
updateCallbackFunction?Optional callback for WebView events

Properties

isInitialized

Returns whether the SDK has been initialized.

bool get isInitialized

Methods

init()

Initializes the WebView SDK with client credentials.

Future<WebViewSdkManager> init({
required String clientId,
required String clientSecret,
required String clientUserId,
Environment? environment,
String? membershipTier,
@Deprecated('Basic auth removed in v1.1.0')
String? basicAuthUser,
@Deprecated('Basic auth removed in v1.1.0')
String? basicAuthPass,
void Function(String, dynamic)? updateCallback,
})
info

init() is asynchronous and returns Future<WebViewSdkManager>. Always use await when calling it.

Events

Event Strings

Various event strings are available for the callback function depending on the modules you're using. For comprehensive documentation on MSK Assessment events, please refer to the MSK Integration Guide.

info

As of gofa_webview v1.2.0, the WebView recognises the generic QUIT_MODULE event (in addition to the legacy QUIT_MSK_MODULE). New integrations should prefer QUIT_MODULE.

// Example events (see specific integration guides for complete lists):
'START_MSK_ASSESSMENT'
'FINISH_ASSESSMENT_SURVEY'
// ... and more

Example Usage

// Initialize
final webViewSdkManager = WebViewSdkManager(
environment: Environment.UAT,
updateCallback: (event, data) {
// Handle events based on your integration
print('Event received: $event');
print('Event data: $data');

// For MSK Assessment events, see the MSK Integration Guide
// at ../msk-integration.md for detailed event handling
},
);

// Register as singleton
if (!GetIt.I.isRegistered<WebViewSdkManager>()) {
GetIt.I.registerSingleton<WebViewSdkManager>(webViewSdkManager);
}

// Initialize with credentials
await webViewSdkManager.init(
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
clientUserId: 'user-id',
environment: Environment.UAT,
);

// Check if initialized
if (webViewSdkManager.isInitialized) {
// Ready to use
}

Integration with GetIt

Registration

Register the WebView SDK Manager as a singleton using GetIt:

import 'package:get_it/get_it.dart';

if (!GetIt.I.isRegistered<WebViewSdkManager>()) {
final webViewSdkManager = WebViewSdkManager(
environment: environment,
updateCallback: webViewSdkUpdateCallback,
);
GetIt.I.registerSingleton<WebViewSdkManager>(webViewSdkManager);
}
info

The environment parameter accepts the Environment enum (Environment.DEV, Environment.UAT, Environment.PRD), not a plain string.

Access

Access the registered instance:

final webViewSdkManager = GetIt.I<WebViewSdkManager>();

Unregistration

Unregister when no longer needed:

if (GetIt.I.isRegistered<WebViewSdkManager>()) {
GetIt.I.unregister<WebViewSdkManager>();
}

Error Handling

Common Error Scenarios

Error TypeCauseHandling
Initialization ErrorInvalid credentialsCheck clientId and clientSecret
Network ErrorConnection issuesRetry with exponential backoff
Authentication ErrorExpired tokensRe-initialize or refresh tokens
Configuration ErrorInvalid environmentVerify environment settings

Error Handling Example

try {
await webViewSdkManager.init(
clientId: clientId,
clientSecret: clientSecret,
clientUserId: clientUserId,
environment: environment,
);
} catch (e) {
if (e is AuthenticationException) {
// Handle authentication errors
showAuthenticationError();
} else if (e is NetworkException) {
// Handle network errors
showNetworkError();
} else {
// Handle other errors
showGenericError(e.toString());
}
}

Best Practices

1. Singleton Pattern

Always use the singleton pattern with GetIt:

// ✅ Correct: Use singleton
if (!GetIt.I.isRegistered<WebViewSdkManager>()) {
GetIt.I.registerSingleton<WebViewSdkManager>(webViewSdkManager);
}

// ❌ Incorrect: Create multiple instances
final manager1 = WebViewSdkManager(...);
final manager2 = WebViewSdkManager(...);

2. Initialization Check

Always check initialization status:

// ✅ Correct: Check before use
if (!webViewSdkManager.isInitialized) {
await webViewSdkManager.init(...);
}

// ❌ Incorrect: Assume it's initialized
webViewSdkManager.someMethod(); // May fail

3. Error Handling

Implement comprehensive error handling:

// ✅ Correct: Handle all error cases
try {
await webViewSdkManager.init(...);
} catch (e) {
handleInitializationError(e);
}

// ❌ Incorrect: No error handling
webViewSdkManager.init(...); // May fail silently

4. Callback Implementation

Implement callback for better user experience:

// ✅ Correct: Provide callback for events
WebViewSdkManager(
updateCallback: (event, data) {
// Handle events appropriately
handleWebViewEvent(event, data);
},
);

// ❌ Incorrect: No callback
WebViewSdkManager(); // Missing important events
  • MSK Integration Guide: Detailed guide for integrating MSK Assessment functionality, including all MSK-specific events and their data structures.

Change History

DateChange
2026-02-24Updated singleton registration example to check GetIt.I.isRegistered<WebViewSdkManager>() before registerSingleton(...).
2026-02-13Fixed environment parameter type from String to Environment enum. Fixed init() return type to Future<WebViewSdkManager>. Added missing membershipTier parameter. Added await to example code.
2026-02-11Marked basicAuthUser/basicAuthPass as @Deprecated in constructor, init(), and all code examples. Basic auth replaced by Firebase custom token auth.