API documentation for the WebViewSdkManager class.
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,
})| Parameter | Type | Description |
|---|---|---|
environment | Environment | Environment enum: Environment.DEV (default), .UAT, or .PRD |
basicAuthUser | String? | Deprecated — No longer used. Will be removed in a future version. |
basicAuthPass | String? | Deprecated — No longer used. Will be removed in a future version. |
updateCallback | Function? | Optional callback for WebView events |
Returns whether the SDK has been initialized.
bool get isInitializedInitializes 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,
})init() is asynchronous and returns Future<WebViewSdkManager>. Always use await when calling it.
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.
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// 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
}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);
}The environment parameter accepts the Environment enum (Environment.DEV, Environment.UAT, Environment.PRD), not a plain string.
Access the registered instance:
final webViewSdkManager = GetIt.I<WebViewSdkManager>();Unregister when no longer needed:
if (GetIt.I.isRegistered<WebViewSdkManager>()) {
GetIt.I.unregister<WebViewSdkManager>();
}| Error Type | Cause | Handling |
|---|---|---|
| Initialization Error | Invalid credentials | Check clientId and clientSecret |
| Network Error | Connection issues | Retry with exponential backoff |
| Authentication Error | Expired tokens | Re-initialize or refresh tokens |
| Configuration Error | Invalid environment | Verify environment settings |
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());
}
}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(...);Always check initialization status:
// ✅ Correct: Check before use
if (!webViewSdkManager.isInitialized) {
await webViewSdkManager.init(...);
}
// ❌ Incorrect: Assume it's initialized
webViewSdkManager.someMethod(); // May failImplement comprehensive error handling:
// ✅ Correct: Handle all error cases
try {
await webViewSdkManager.init(...);
} catch (e) {
handleInitializationError(e);
}
// ❌ Incorrect: No error handling
webViewSdkManager.init(...); // May fail silentlyImplement 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| Date | Change |
|---|---|
| 2026-02-24 | Updated singleton registration example to check GetIt.I.isRegistered<WebViewSdkManager>() before registerSingleton(...). |
| 2026-02-13 | Fixed 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-11 | Marked basicAuthUser/basicAuthPass as @Deprecated in constructor, init(), and all code examples. Basic auth replaced by Firebase custom token auth. |