Flash Message
Thông báo tin nhắn nhanh trong ứng dụng
Giả định rằng chúng ta sử dụng flash để hiển thị giao diện của Flash hoặc Toast Message.
import 'package:piscale_chat_flutter/piscale_chat_flutter.dart';
import 'package:flash/flash_helper.dart';
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp.router(
routerConfig: appRouter,
builder: (context, child) {
return Toast(
navigatorKey: rootNavigatorKey,
child: PSChat(
userId: 'USER_ID',
deviceId: 'DEVICE_ID',
apiClientOptions: PSChatApiClientOptions(
appId: ('APP_ID'),
fetchToken: fetchToken,
),
child: child,
),
);
},
);
}
}
Chúng tôi cung cấp 2 Events thông qua Stream để ứng dụng của bạn có thể tuỳ chỉnh nhiều hơn:
PSShowFlashMessageEvent
: dữ liệu của FlashMessagePSShowToastMessageEvent
: dữ liệu của ToastMessage
import 'package:piscale_chat_flutter/piscale_chat_flutter.dart';
class _HomePageState extends State<HomePage> {
StreamSubscription? _showFlashMessageSubscription;
StreamSubscription? _showToastMessageSubscription;
FlashController<bool>? _flashMessageController;
FlashController<bool>? _toastMessageController;
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback(
(_) {
_showFlashMessageSubscription =
psEventBus.on<PSShowFlashMessageEvent>().listen(
(event) {
_flashMessageController?.tryDismiss();
context.showFlash<bool>(
duration: const Duration(milliseconds: 2000),
builder: (context, controller) {
_flashMessageController = controller;
return PSFlashMessage(
controller: controller,
data: event.data,
onTap: () {
final threadId = event.data.threadId;
final messageId = event.data.messageId;
context.replace(
AppPage.messages.toPath,
extra: MessagesPageExtra(
targetThreadId: threadId,
targetMessageId: messageId,
),
);
},
);
},
);
},
);
_showToastMessageSubscription =
psEventBus.on<PSShowToastMessageEvent>().listen(
(event) {
_toastMessageController?.tryDismiss();
context.showFlash<bool>(
duration: const Duration(milliseconds: 2000),
builder: (context, controller) {
_toastMessageController = controller;
return PSToastMessage(
controller: controller,
data: event.data,
);
},
);
},
);
},
);
super.initState();
}
@override
void dispose() {
_showFlashMessageSubscription?.cancel();
_showToastMessageSubscription?.cancel();
super.dispose();
}
}