download some codes

This commit is contained in:
DASHU
2025-05-08 14:00:21 +08:00
parent 586e76df5c
commit a55faa3f1e
19 changed files with 702 additions and 19 deletions

View File

@@ -105,6 +105,10 @@ class _BookmarkRouter extends CustState<BookmarkRouter>
setState(() {
selectedIds.add(bookmark.id!);
});
} else {
setState(() {
selectedIds.remove(bookmark.id!);
});
}
});

View File

@@ -0,0 +1,113 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:nowser/component/cust_state.dart';
import 'package:nowser/component/download_list_item_component.dart';
import 'package:nowser/data/download_log.dart';
import 'package:nowser/data/download_log_db.dart';
import 'package:nowser/provider/download_provider.dart';
import 'package:provider/provider.dart';
import '../../component/appbar_back_btn_component.dart';
import '../../component/deletable_list_mixin.dart';
import '../../const/base.dart';
import '../../generated/l10n.dart';
import '../../util/router_util.dart';
class DownloadsRouter extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _DownloadsRouter();
}
}
class _DownloadsRouter extends CustState<DownloadsRouter>
with DeletableListMixin {
List<int> selectedIds = [];
List<DownloadLog> completedLogs = [];
@override
Future<void> onReady(BuildContext context) async {
var allList = await DownloadLogDB.all();
print(allList);
setState(() {
completedLogs = allList;
});
}
@override
Widget doBuild(BuildContext context) {
var themeData = Theme.of(context);
var s = S.of(context);
var _downloadProvider = Provider.of<DownloadProvider>(context);
List<DownloadLog> currentDownloadLogs =
_downloadProvider.currentDownloadLogs;
List<Widget> list = [];
for (var logItem in currentDownloadLogs) {
list.add(wrapItem(DownloadListItemComponent(logItem), logItem));
}
int? lastMonth;
int? lastDay;
for (var logItem in completedLogs) {
if (logItem.createdAt != null) {
var date =
DateTime.fromMillisecondsSinceEpoch(logItem.createdAt! * 1000);
if (date.month != lastMonth || date.day != lastDay) {
var dateStr = DateFormat.yMd().format(date);
list.add(Container(
margin: EdgeInsets.only(
left: Base.BASE_PADDING, top: Base.BASE_PADDING),
child: Text(
dateStr,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
));
}
}
list.add(wrapItem(DownloadListItemComponent(logItem), logItem));
}
return Scaffold(
appBar: AppBar(
leading: AppbarBackBtnComponent(),
title: Text(
s.Downloads,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: themeData.textTheme.bodyLarge!.fontSize,
),
),
actions: genAppBarActions(context),
),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: list,
),
),
);
}
Widget wrapItem(Widget child, DownloadLog downloadLog) {
return wrapListItem(child, onTap: () {
// RouterUtil.back(context, history.url);
}, onSelect: () {
if (!selectedIds.contains(downloadLog.id)) {
setState(() {
selectedIds.add(downloadLog.id!);
});
} else {
setState(() {
selectedIds.remove(downloadLog.id!);
});
}
});
}
}

View File

@@ -86,6 +86,10 @@ class _HistoryRouter extends CustState<HistoryRouter> with DeletableListMixin {
setState(() {
selectedIds.add(history.id!);
});
} else {
setState(() {
selectedIds.remove(history.id!);
});
}
});

View File

@@ -155,7 +155,7 @@ class _WebControlComponent extends State<WebControlComponent> {
size: 30,
),
onTap: () {
BotToast.showText(text: s.Comming_soon);
RouterUtil.router(context, RouterPath.DOWNLOADS);
},
),
),

View File

@@ -9,6 +9,7 @@ import 'package:nowser/const/router_path.dart';
import 'package:nowser/data/auth_log_db.dart';
import 'package:nowser/data/bookmark_db.dart';
import 'package:nowser/data/browser_history_db.dart';
import 'package:nowser/data/download_log_db.dart';
import 'package:nowser/main.dart';
import 'package:nowser/provider/app_provider.dart';
import 'package:nowser/provider/key_provider.dart';
@@ -53,6 +54,7 @@ class _MeRouter extends CustState<MeRouter> {
Future<void> updateNumber() async {
bookmarkNum = await BookmarkDB.total();
historyNum = await BrowserHistoryDB.total();
downloadNum = await DownloadLogDB.total();
setState(() {});
}
@@ -186,7 +188,7 @@ class _MeRouter extends CustState<MeRouter> {
name: s.Downloads,
iconData: Icons.download,
onTap: () {
BotToast.showText(text: s.Comming_soon);
RouterUtil.router(context, RouterPath.DOWNLOADS);
},
));
// webItemList.add(MeRouterWebItemComponent(