mirror of
https://github.com/haorendashu/nowser.git
synced 2025-12-17 18:04:18 +01:00
add bookmark and bookmark page
This commit is contained in:
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) {}
|
||||
} catch (e) {
|
||||
print(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