Skip to content

Events

Defining Events

Events must be defined as Dart enums and registered with XWidget:

enum AppEvent {
  userLoggedIn,
  userLoggedOut,
  dataRefreshed,
  themeChanged,
  cartUpdated,
}

void main() {
  XWidget.registerEnum('AppEvent', AppEvent.values);
  runApp(MyApp());
}

Firing Events

Fire events from anywhere in your application:

// Fire event without payload
EventNotifier.notify(AppEvent.userLoggedIn);

// Fire event with payload
EventNotifier.notify(AppEvent.cartUpdated, {'itemCount': 5, 'total': 99.99});

// From a controller
class UserController extends Controller {
  Future<void> login(String email, String password) async {
    await api.login(email, password);
    EventNotifier.notify(AppEvent.userLoggedIn, {'email': email});
  }
}