Skip to content

Repository files navigation

Escalated for Flutter

TestsFlutterDartLicense: MIT

A full-featured, embeddable support ticket UI for Flutter apps. Drop it into any Flutter project — get a complete customer-facing helpdesk with ticket management, knowledge base, guest access, and SLA tracking. Connects to the Escalated REST API.

escalated.dev — Learn more, view demos, and compare Cloud vs Self-Hosted options.

One widget, full support experience. Wrap your app with EscalatedPlugin, point it at your API, and every screen is ready — login, tickets, knowledge base, guest access. Customize colors, auth behavior, and locale with a single config object.

Features

  • Ticket management — Create, view, filter, and reply to support tickets with file attachments
  • Knowledge base — Searchable article list with HTML rendering for self-service support
  • Guest tickets — Anonymous ticket submission without requiring authentication
  • SLA tracking — Real-time SLA countdown timers on ticket detail views
  • Satisfaction ratings — Post-resolution CSAT ratings with star display
  • Auth hooks — Override login, logout, register, and token retrieval to integrate with your existing auth
  • Riverpod state management — Auth, tickets, knowledge base, and theme providers out of the box
  • GoRouter-compatible — Drop screens into your existing GoRouter navigation tree
  • Dark mode — Full dark and light theme support with customizable primary color and border radius
  • i18n — Localized in 4 languages (English, Spanish, French, German)
  • Configurable — API base URL, auth hooks, primary color, border radius, dark mode, default locale

Requirements

  • Flutter 3.16+
  • Dart 3.2+
  • A running Escalated backend (Laravel, Rails, Django, AdonisJS, or WordPress)

Quick Start

Add the dependency to your pubspec.yaml:

dependencies:
escalated:
git:
url: https://github.com/escalated-dev/escalated-flutter.git

Wrap your app with EscalatedPlugin:

import'package:escalated/escalated.dart';
EscalatedPlugin(
config:EscalatedConfig(
apiBaseUrl:'https://yourapp.com/support/api/v1/mobile',
),
child:MaterialApp.router(...),
)

That's it — your app now has a full support ticket UI.

Configuration

EscalatedConfig accepts the following options:

EscalatedConfig(
apiBaseUrl:'https://yourapp.com/support/api/v1/mobile',
authHooks: myAuthHooks,
primaryColor:Color(0xFF4F46E5),
borderRadius:12.0,
darkMode:false,
defaultLocale:'en',
)
OptionTypeDefaultDescription
apiBaseUrlStringrequiredBase URL for the Escalated REST API
authHooksEscalatedAuthHooks?nullCustom auth hook overrides
primaryColorColor?#4F46E5Primary action color for buttons and accents
borderRadiusdouble?8.0Border radius for cards, inputs, and buttons
darkModebool?falseEnable dark theme
defaultLocaleString?'en'Default locale code (en, es, fr, de)

Available Screens

ScreenDescription
LoginScreenEmail/password login form
RegisterScreenNew account registration
TicketListScreenPaginated ticket list with status filters
CreateTicketScreenNew ticket form with file attachments
TicketDetailScreenFull ticket thread with replies and metadata
KBListScreenKnowledge base article listing
KBArticleScreenSingle article view with HTML rendering
GuestCreateScreenAnonymous ticket submission
GuestTicketScreenGuest ticket view via token
SettingsScreenUser preferences and locale selection
TicketFiltersScreenAdvanced ticket filter controls

Available Widgets

WidgetDescription
StatusBadgeTicket status indicator
PriorityBadgePriority level indicator
SlaTimerSLA countdown display
AttachmentListFile attachment display
FileDropzoneDrag-and-drop file upload
SatisfactionRatingStar rating display and input
ReplyThreadChronological message thread
ReplyComposerReply text input with attachments
EmptyStatePlaceholder for empty lists
LoadingShimmerShimmer loading placeholder
ErrorViewError state with retry action

Providers

Escalated uses Riverpod for state management. Four providers are available:

ProviderDescription
authProviderAuthentication state, login/logout/register actions
ticketsProviderTicket list, creation, replies, and filtering
kbProviderKnowledge base articles and search
themeProviderTheme configuration (colors, dark mode, locale)

Models

Nine models with full fromJson / toJson serialization are included for use with the REST API. All models map directly to the Escalated API response format.

Auth Hooks

Auth hooks let you override default authentication behavior to integrate with your app's existing auth system:

EscalatedConfig(
apiBaseUrl:'https://yourapp.com/support/api/v1/mobile',
authHooks:EscalatedAuthHooks(
onLogin: (email, password) async {
// Your custom login logicreturn yourAuthToken;
},
onLogout: () async {
// Your custom logout logic
},
onRegister: (name, email, password) async {
// Your custom registration logicreturn yourAuthToken;
},
getToken: () async {
// Return the current auth tokenreturnawait secureStorage.read(key:'token');
},
),
)

When no auth hooks are provided, Escalated uses its built-in Dio HTTP client with flutter_secure_storage for token persistence.

Internationalization

Escalated ships with translations for four languages:

CodeLanguage
enEnglish
esSpanish
frFrench
deGerman

Set the default locale via EscalatedConfig.defaultLocale or let users switch in the Settings screen.

Dependencies

PackagePurpose
dioHTTP client for API requests
flutter_riverpodState management
go_routerNavigation and routing
flutter_secure_storageSecure token persistence
flutter_htmlHTML rendering for knowledge base articles
shimmerLoading placeholder animations
file_pickerFile selection for attachments
image_pickerImage selection for attachments
intlInternationalization and date formatting

Also Available For

FrameworkPackageRepository
Laravelescalated-dev/escalated-laravelGitHub
Ruby on Railsescalated (gem)GitHub
Djangoescalated-djangoGitHub
AdonisJS@escalated-dev/escalated-adonisGitHub
WordPressescalated-wordpressGitHub
Vue UI@escalated-dev/escalatedGitHub
Flutterescalated (Flutter)GitHub
React Native@escalated-dev/escalated-react-nativeGitHub

Same architecture, same REST API, same support experience — for every major framework.

License

MIT

About

The flutter extension for Escalated

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages