Skipp Desk for Flutter
Skipp Desk is intentionally a small integration. Start with the basic setup and only add trusted identity if your product needs stronger identity assurance.
Step 1: Install and open support
flutter pub add skipp_desk
import 'package:skipp_desk/skipp_desk.dart';
SkippDeskWidget(
workspaceId: 'your-workspace-id',
apiBaseUrl: 'https://api.zirrodesk.com',
user: SkippDeskUser(id: currentUser.id, email: currentUser.email),
onClose: () => Navigator.of(context).pop(),
)
That is the complete normal integration. workspaceId is public configuration,
and user is optional. Supplying it avoids asking a signed-in customer for the
same details again. Never put a private server key in a mobile application.
Present the widget as a full-screen route or sheet owned by the host app.
Logout and account switching
Changing user.id automatically isolates the next customer's support state. To
explicitly clear support state during logout, provide a controller:
final desk = SkippDeskController();
SkippDeskWidget(
controller: desk,
workspaceId: workspaceId,
apiBaseUrl: apiBaseUrl,
)
await desk.reset();
await signOut();
Trusted identity (optional)
The basic integration remains valid. For verified customer identity, create a signing secret in Skipp Desk's Widget installation panel, keep it on your backend, and sign a short-lived HS256 JWT with these claims:
{
"kind": "widget_identity",
"sub": "your-stable-customer-id",
"workspace_id": "your-workspace-id",
"name": "Ada",
"email": "ada@example.com",
"iat": 1785859200,
"exp": 1785862800
}
The lifetime must not exceed 24 hours. Pass the token returned by your backend:
SkippDeskWidget(
workspaceId: workspaceId,
apiBaseUrl: 'https://api.zirrodesk.com',
user: currentUser,
identityToken: tokenFromYourBackend,
)
External links
External article links open in the platform browser by default. Override
onOpenExternalUrl to use your own in-app browser or URL allow-list.
Local development
Pass mobileUrl: 'http://localhost:5174/mobile.html' and
widgetScriptUrl: 'http://localhost:5174/src/main.ts'. A physical phone cannot
reach the development machine through localhost; use its LAN address.
Release checks
flutter analyze
flutter test
dart pub publish --dry-run