first commit

This commit is contained in:
kicap
2025-07-13 06:59:30 +08:00
commit 86d84de7e3
165 changed files with 7941 additions and 0 deletions

View File

@ -0,0 +1,152 @@
import 'package:flutter/material.dart';
import 'package:stacked/stacked.dart';
import '../../../../app/themes/app_text.dart';
import './log_data_view_model.dart';
class LogDataView extends StatelessWidget {
const LogDataView({super.key});
@override
Widget build(BuildContext context) {
return ViewModelBuilder<LogDataViewModel>.reactive(
viewModelBuilder: () => LogDataViewModel(),
onViewModelReady: (LogDataViewModel model) async {
await model.init();
},
fireOnViewModelReadyOnce: true,
createNewViewModelOnInsert: true,
builder: (
BuildContext context,
LogDataViewModel model,
Widget? child,
) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(30),
child: model.isBusy
? const Center(
child: CircularProgressIndicator(),
)
: SingleChildScrollView(
child: Table(
border: TableBorder.all(),
children: [
const TableRow(
children: [
TableCell(
child: Center(
child: Text(
'Waktu',
style: boldTextStyle,
),
),
),
TableCell(
child: Center(
child: Text(
'Status',
style: boldTextStyle,
),
),
),
TableCell(
child: Center(
child: Text(
'Download',
style: boldTextStyle,
),
),
),
TableCell(
child: Center(
child: Text(
'Upload',
style: boldTextStyle,
),
),
),
],
),
...model.otherFunction.listDataOnt.isEmpty
? [
TableRow(
children: List.generate(
4, // Ensure the same number of columns
(index) => TableCell(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10),
child: Text(
"Loading...",
style: regularTextStyle,
textAlign: TextAlign.center,
),
),
),
),
),
]
: model.otherFunction.listDataOnt
.map((data) => TableRow(
children: [
TableCell(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10),
child: Text(
data.getFormattedDate(),
style: regularTextStyle,
textAlign: TextAlign.center,
),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10),
child: Text(
data.status,
style: regularTextStyle,
textAlign: TextAlign.center,
),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10),
child: Text(
data.download == "-"
? "-"
: data.download + " Mbps",
style: regularTextStyle,
textAlign: TextAlign.center,
),
),
),
TableCell(
child: Padding(
padding: const EdgeInsets.symmetric(
horizontal: 10),
child: Text(
data.upload == "-"
? "-"
: data.upload + " Mbps",
style: regularTextStyle,
textAlign: TextAlign.center,
),
),
),
],
))
.toList(),
],
),
),
),
);
},
);
}
}

View File

@ -0,0 +1,15 @@
import 'dart:async';
import '../../../../app/app.logger.dart';
import '../../../../app/core/custom_base_view_model.dart';
class LogDataViewModel extends CustomBaseViewModel {
final log = getLogger('LogDataViewModel');
Future<void> init() async {
Timer.periodic(const Duration(seconds: 10), (timer) {
log.i('timer dan refresh data');
notifyListeners();
});
}
}