add timeline pkg to flutter

This commit is contained in:
2026-02-24 19:26:17 +01:00
parent 0d1119b2af
commit 28898fb081
33 changed files with 2617 additions and 43 deletions

View File

@@ -0,0 +1,37 @@
import 'dart:convert';
import 'dart:js_interop';
@JS('window.__zendegi__')
external _ZendegiBridge? get _bridge;
extension type _ZendegiBridge._(JSObject _) implements JSObject {
external JSString getState();
external void onEvent(JSString json);
external set updateState(JSFunction callback);
}
Map<String, dynamic>? readInitialState() {
final bridge = _bridge;
if (bridge == null) return null;
final json = bridge.getState().toDart;
return jsonDecode(json) as Map<String, dynamic>;
}
void onStateUpdated(void Function(Map<String, dynamic> state) callback) {
final bridge = _bridge;
if (bridge == null) return;
bridge.updateState = ((JSString json) {
final decoded = jsonDecode(json.toDart) as Map<String, dynamic>;
callback(decoded);
}).toJS;
}
void emitEvent(String type, [Map<String, dynamic>? payload]) {
final bridge = _bridge;
if (bridge == null) return;
final event = <String, dynamic>{'type': type};
if (payload != null) {
event['payload'] = payload;
}
bridge.onEvent(jsonEncode(event).toJS);
}