这是基于vue-vben-admin 模板适用于abp Vnext的前端管理项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

102 lines
3.5 KiB

import 'package:components/index.dart';
import 'package:core/utils/date.format.utils.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:notifications/models/index.dart';
import 'controller.dart';
class NotificationsPage extends BasePage<NotificationsController> {
const NotificationsPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Page:Notifications'.tr),
),
body: SafeArea(
child: RefreshIndicator(
onRefresh: bloc.onTopScroll,
child: Stack(
children: [
Obx(() => _buildNotifications()),
BackToTop(controller: bloc.scroll),
],
),
),
),
);
}
Widget _buildNotifications() {
return ListView.builder(
itemCount: bloc.state.hasMore
? bloc.state.notifications.length + 1
: bloc.state.notifications.length,
itemBuilder: (context, index) {
if (index == bloc.state.notifications.length) {
return Empty.none;
}
var notification = bloc.state.notifications[index];
var payload = NotificationPaylod.fromDto(notification);
return InkWell(
onTap: () => bloc.showPayload(payload),
child: Container(
padding: const EdgeInsets.only(bottom: 10, left: 10, right: 10),
child: Column(
children: [
Center(
child: Text(notification.creationTime
.format(['yyyy', '-', 'mm', '-', 'dd', ' ', 'HH', ':', 'nn', ':', 'ss'])),
),
Card(
child: Column(
children: [
ListTile(
title: Padding(
padding: const EdgeInsets.only(bottom: 10),
child: Text(payload.title),
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('通知来源: ${payload.formUser ?? ''}', textAlign: TextAlign.left,),
Text('通知类型: ${payload.title}', textAlign: TextAlign.left,),
Text('发布时间: ${notification.creationTime
.format(['yyyy', '-', 'mm', '-', 'dd', ' ', 'HH', ':', 'nn', ':', 'ss'])}',
textAlign: TextAlign.left
),
],
),
),
const Divider(),
const SizedBox(
height: 26,
child: Stack(
children: [
Positioned(
left: 10,
child: Center(child: Text('查看详情')),
),
Positioned(
right: 10,
child: Center(child: Icon(Icons.arrow_forward_ios,
size: 13,
color: Colors.grey,
)),
),
],
),
)
],
)
),
],
),
),
);
},
controller: bloc.scroll,
);
}
}