mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 07:47:24 +00:00
search page
This commit is contained in:
@@ -2,6 +2,7 @@ import 'dart:math';
|
||||
import 'dart:ui';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:venera/components/components.dart';
|
||||
|
||||
const double _kBackGestureWidth = 20.0;
|
||||
const int _kMaxDroppedSwipePageForwardAnimationTime = 800;
|
||||
@@ -35,7 +36,11 @@ class AppPageRoute<T> extends PageRoute<T> with _AppRouteTransitionMixin{
|
||||
@override
|
||||
Widget buildContent(BuildContext context) {
|
||||
var widget = builder(context);
|
||||
label = widget.runtimeType.toString();
|
||||
if(widget is NaviPaddingWidget) {
|
||||
label = widget.child.runtimeType.toString();
|
||||
} else {
|
||||
label = widget.runtimeType.toString();
|
||||
}
|
||||
return widget;
|
||||
}
|
||||
|
||||
|
@@ -5,18 +5,53 @@ import 'package:venera/utils/io.dart';
|
||||
|
||||
class _Appdata {
|
||||
final _Settings settings = _Settings();
|
||||
|
||||
var searchHistory = <String>[];
|
||||
|
||||
void saveSettings() async {
|
||||
var data = jsonEncode(settings._data);
|
||||
var file = File(FilePath.join(App.dataPath, 'settings.json'));
|
||||
void saveData() async {
|
||||
var data = jsonEncode(toJson());
|
||||
var file = File(FilePath.join(App.dataPath, 'appdata.json'));
|
||||
await file.writeAsString(data);
|
||||
}
|
||||
|
||||
void addSearchHistory(String keyword) {
|
||||
if(searchHistory.contains(keyword)) {
|
||||
searchHistory.remove(keyword);
|
||||
}
|
||||
searchHistory.insert(0, keyword);
|
||||
if(searchHistory.length > 50) {
|
||||
searchHistory.removeLast();
|
||||
}
|
||||
saveData();
|
||||
}
|
||||
|
||||
void removeSearchHistory(String keyword) {
|
||||
searchHistory.remove(keyword);
|
||||
saveData();
|
||||
}
|
||||
|
||||
void clearSearchHistory() {
|
||||
searchHistory.clear();
|
||||
saveData();
|
||||
}
|
||||
|
||||
Future<void> init() async {
|
||||
var json = jsonDecode(await File(FilePath.join(App.dataPath, 'settings.json')).readAsString()) as Map<String, dynamic>;
|
||||
for(var key in json.keys) {
|
||||
var file = File(FilePath.join(App.dataPath, 'appdata.json'));
|
||||
if(!await file.exists()) {
|
||||
return;
|
||||
}
|
||||
var json = jsonDecode(await file.readAsString());
|
||||
for(var key in json['settings'].keys) {
|
||||
settings[key] = json[key];
|
||||
}
|
||||
searchHistory = List.from(json['searchHistory']);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'settings': settings._data,
|
||||
'searchHistory': searchHistory,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +74,7 @@ class _Settings {
|
||||
'showFavoriteStatusOnTile': true,
|
||||
'showHistoryStatusOnTile': false,
|
||||
'blockedWords': [],
|
||||
'defaultSearchTarget': null,
|
||||
};
|
||||
|
||||
operator[](String key) {
|
||||
|
Reference in New Issue
Block a user