mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-17 09:54:19 +01:00
add bookmark and bookmark page
This commit is contained in:
@@ -8,4 +8,5 @@ class RouterPath {
|
||||
static const String ADD_REMOTE_APP = "/addRemoteApp";
|
||||
static const String APP_DETAIL = "/appDetail";
|
||||
static const String HISTORY = "/history";
|
||||
static const String BOOKMARK = "/bookmark";
|
||||
}
|
||||
|
||||
@@ -14,4 +14,17 @@ class BookmarkDB {
|
||||
var sql = "select count(1) from bookmark";
|
||||
return Sqflite.firstIntValue(await db.rawQuery(sql));
|
||||
}
|
||||
|
||||
static Future<List<Bookmark>> all({DatabaseExecutor? db}) async {
|
||||
List<Bookmark> objs = [];
|
||||
List<Object?>? arguments = [];
|
||||
db = await DB.getDB(db);
|
||||
var sql = "select * from bookmark order by created_at desc";
|
||||
List<Map<String, dynamic>> list = await db.rawQuery(sql, arguments);
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
var json = list[i];
|
||||
objs.add(Bookmark.fromJson(json));
|
||||
}
|
||||
return objs;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import 'package:nowser/provider/web_provider.dart';
|
||||
import 'package:nowser/router/app_detail/app_detail_router.dart';
|
||||
import 'package:nowser/router/apps/add_remote_app_router.dart';
|
||||
import 'package:nowser/router/apps/apps_router.dart';
|
||||
import 'package:nowser/router/bookmark/bookmark_router.dart';
|
||||
import 'package:nowser/router/history/history_router.dart';
|
||||
import 'package:nowser/router/index/index_router.dart';
|
||||
import 'package:nowser/router/keys/keys_router.dart';
|
||||
@@ -104,6 +105,7 @@ class _MyApp extends State<MyApp> {
|
||||
RouterPath.ADD_REMOTE_APP: (context) => AddRemoteAppRouter(),
|
||||
RouterPath.APP_DETAIL: (context) => AppDetailRouter(),
|
||||
RouterPath.HISTORY: (context) => HistoryRouter(),
|
||||
RouterPath.BOOKMARK: (context) => BookmarkRouter(),
|
||||
};
|
||||
|
||||
return MultiProvider(
|
||||
|
||||
79
lib/router/bookmark/bookmark_router.dart
Normal file
79
lib/router/bookmark/bookmark_router.dart
Normal file
@@ -0,0 +1,79 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:nowser/component/cust_state.dart';
|
||||
import 'package:nowser/component/url_list_item_componnet.dart';
|
||||
import 'package:nowser/data/browser_history_db.dart';
|
||||
import 'package:nowser/util/router_util.dart';
|
||||
|
||||
import '../../component/appbar_back_btn_component.dart';
|
||||
import '../../const/base.dart';
|
||||
import '../../data/bookmark.dart';
|
||||
import '../../data/bookmark_db.dart';
|
||||
|
||||
class BookmarkRouter extends StatefulWidget {
|
||||
@override
|
||||
State<StatefulWidget> createState() {
|
||||
return _BookmarkRouter();
|
||||
}
|
||||
}
|
||||
|
||||
class _BookmarkRouter extends CustState<BookmarkRouter> {
|
||||
List<Bookmark> bookmarks = [];
|
||||
|
||||
@override
|
||||
Future<void> onReady(BuildContext context) async {
|
||||
bookmarks = await BookmarkDB.all();
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget doBuild(BuildContext context) {
|
||||
var themeData = Theme.of(context);
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
leading: AppbarBackBtnComponent(),
|
||||
title: Text(
|
||||
"Bookmarks",
|
||||
style: TextStyle(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: themeData.textTheme.bodyLarge!.fontSize,
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
// GestureDetector(
|
||||
// onTap: () {},
|
||||
// child: Container(
|
||||
// padding: const EdgeInsets.all(Base.BASE_PADDING),
|
||||
// child: Icon(Icons.delete_sweep_outlined),
|
||||
// ),
|
||||
// ),
|
||||
],
|
||||
),
|
||||
body: ListView.builder(
|
||||
itemBuilder: (context, index) {
|
||||
if (index >= bookmarks.length) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var bookmark = bookmarks[index];
|
||||
|
||||
var main = Container(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
RouterUtil.back(context, bookmark.url);
|
||||
},
|
||||
child: UrlListItemComponnet(
|
||||
image: bookmark.favicon,
|
||||
title: bookmark.title ?? "",
|
||||
url: bookmark.url ?? "",
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
return main;
|
||||
},
|
||||
itemCount: bookmarks.length,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import 'package:nowser/component/cust_state.dart';
|
||||
import 'package:nowser/main.dart';
|
||||
import 'package:nowser/provider/web_provider.dart';
|
||||
import 'package:nowser/router/index/index_web_component.dart';
|
||||
import 'package:nowser/util/router_util.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../component/webview/webview_component.dart';
|
||||
@@ -84,16 +85,22 @@ class _IndexRouter extends CustState<IndexRouter>
|
||||
enableDrag: true,
|
||||
showDragHandle: true,
|
||||
);
|
||||
bottomSheetController!.closed.then((v) {
|
||||
bottomSheetController = null;
|
||||
});
|
||||
}
|
||||
|
||||
bool closeControl() {
|
||||
bool closeAble = false;
|
||||
try {
|
||||
if (bottomSheetController != null) {
|
||||
bottomSheetController!.close();
|
||||
// bottomSheetController!.close();
|
||||
closeAble = true;
|
||||
RouterUtil.back(context);
|
||||
}
|
||||
} catch (e) {
|
||||
print(e);
|
||||
}
|
||||
} catch (e) {}
|
||||
bottomSheetController = null;
|
||||
return closeAble;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:nowser/const/base.dart';
|
||||
import 'package:nowser/const/router_path.dart';
|
||||
import 'package:nowser/provider/web_provider.dart';
|
||||
import 'package:nowser/router/index/web_control_btn_component.dart';
|
||||
import 'package:nowser/util/router_util.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class WebControlComponent extends StatefulWidget {
|
||||
@@ -87,6 +89,13 @@ class _WebControlComponent extends State<WebControlComponent> {
|
||||
Icons.bookmark_border,
|
||||
size: 30,
|
||||
),
|
||||
onTap: () async {
|
||||
var url =
|
||||
await RouterUtil.router(context, RouterPath.BOOKMARK);
|
||||
if (webProvider.currentGoTo(url)) {
|
||||
RouterUtil.back(context);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
@@ -96,6 +105,13 @@ class _WebControlComponent extends State<WebControlComponent> {
|
||||
Icons.bookmark_add_outlined,
|
||||
size: 30,
|
||||
),
|
||||
onTap: () {
|
||||
var webInfo = webProvider.currentWebInfo();
|
||||
if (webInfo != null) {
|
||||
webProvider.addBookmark(webInfo);
|
||||
RouterUtil.back(context);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
@@ -105,6 +121,13 @@ class _WebControlComponent extends State<WebControlComponent> {
|
||||
Icons.history,
|
||||
size: 30,
|
||||
),
|
||||
onTap: () async {
|
||||
var url =
|
||||
await RouterUtil.router(context, RouterPath.HISTORY);
|
||||
if (webProvider.currentGoTo(url)) {
|
||||
RouterUtil.back(context);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
|
||||
@@ -153,6 +153,12 @@ class _MeRouter extends CustState<MeRouter> {
|
||||
num: bookmarkNum,
|
||||
name: "Bookmark",
|
||||
iconData: Icons.bookmark,
|
||||
onTap: () async {
|
||||
var url = await RouterUtil.router(context, RouterPath.BOOKMARK);
|
||||
if (webProvider.currentGoTo(url)) {
|
||||
RouterUtil.back(context);
|
||||
}
|
||||
},
|
||||
));
|
||||
webItemList.add(MeRouterWebItemComponent(
|
||||
num: historyNum,
|
||||
@@ -160,7 +166,6 @@ class _MeRouter extends CustState<MeRouter> {
|
||||
iconData: Icons.history,
|
||||
onTap: () async {
|
||||
var url = await RouterUtil.router(context, RouterPath.HISTORY);
|
||||
print("url $url");
|
||||
if (webProvider.currentGoTo(url)) {
|
||||
RouterUtil.back(context);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user