Skip to content

Commit

Permalink
Optimize Reuslt Scroll
Browse files Browse the repository at this point in the history
  • Loading branch information
lylwx committed Dec 4, 2023
1 parent d94b3fe commit 49593b7
Show file tree
Hide file tree
Showing 8 changed files with 233 additions and 91 deletions.
3 changes: 1 addition & 2 deletions Wox.UI.Flutter/wox/lib/controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import 'package:get/get.dart';
import 'package:logger/logger.dart';
import 'package:uuid/v4.dart';
import 'package:window_manager/window_manager.dart';
import 'package:wox/utils/env.dart';
import 'package:wox/entity/wox_websocket_msg.dart';
import 'package:wox/utils/env.dart';
import 'package:wox/utils/websocket.dart';

import 'entity.dart';
Expand Down Expand Up @@ -63,7 +63,6 @@ class WoxController extends GetxController {
}

Future<void> toggleApp(ShowAppParams params) async {
Logger().i("Toggle app");
var isVisible = await windowManager.isVisible();
if (isVisible) {
hide();
Expand Down
14 changes: 7 additions & 7 deletions Wox.UI.Flutter/wox/lib/entity/wox_query.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ import 'package:wox/enums/wox_position_type_enum.dart';
import 'package:wox/enums/wox_query_type_enum.dart';
import 'package:wox/enums/wox_selection_type_enum.dart';

class WoxQuery {
class WoxChangeQuery {
late String queryId;
late WoxQueryType queryType;
late String queryText;
late Selection querySelection;

WoxQuery({required this.queryId, required this.queryType, required this.queryText, required this.querySelection});
WoxChangeQuery({required this.queryId, required this.queryType, required this.queryText, required this.querySelection});

WoxQuery.fromJson(Map<String, dynamic> json) {
WoxChangeQuery.fromJson(Map<String, dynamic> json) {
queryId = json['QueryId'] ?? "";
queryType = json['QueryType'];
queryText = json['QueryText'];
Expand All @@ -31,8 +31,8 @@ class WoxQuery {

bool get isEmpty => queryText.isEmpty && querySelection.type.isEmpty;

static WoxQuery empty() {
return WoxQuery(queryId: "", queryType: "", queryText: "", querySelection: Selection.empty());
static WoxChangeQuery empty() {
return WoxChangeQuery(queryId: "", queryType: "", queryText: "", querySelection: Selection.empty());
}
}

Expand Down Expand Up @@ -67,11 +67,11 @@ class Selection {
}

class QueryHistory {
WoxQuery? query;
WoxChangeQuery? query;
int? timestamp;

QueryHistory.fromJson(Map<String, dynamic> json) {
query = json['Query'] != null ? WoxQuery.fromJson(json['Query']) : null;
query = json['Query'] != null ? WoxChangeQuery.fromJson(json['Query']) : null;
timestamp = json['Timestamp'];
}
}
Expand Down
29 changes: 11 additions & 18 deletions Wox.UI.Flutter/wox/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,11 @@ import 'package:wox/utils/env.dart';
import 'package:wox/utils/heartbeat_checker.dart';
import 'package:wox/utils/log.dart';
import 'package:wox/utils/wox_theme_util.dart';
import 'package:wox/utils/wox_websocket_msg_util.dart';

void main(List<String> arguments) async {
WidgetsFlutterBinding.ensureInitialized();

await Logger.instance.initLogger();
await initArgs(arguments);
Logger.instance.info("---------------------");
Logger.instance.info("Server port: ${Env.serverPort}");
Logger.instance.info("Server pid: ${Env.serverPid}");
Logger.instance.info("Is dev: ${Env.isDev}");

HeartbeatChecker().startChecking();
await loadSystemConfig();
await initialServices(arguments);
await initWindow();
await initGetX();
runApp(const MyApp());
}

Expand All @@ -48,8 +38,15 @@ Future<void> initArgs(List<String> arguments) async {
Env.isDev = arguments[2] == "true";
}

Future<void> loadSystemConfig() async {
Future<void> initialServices(List<String> arguments) async {
WidgetsFlutterBinding.ensureInitialized();
await Logger.instance.initLogger();
await initArgs(arguments);
await WoxThemeUtil.instance.loadTheme();
var controller = WoxLauncherController();
await WoxWebsocketMsgUtil.instance.initialize(Uri.parse("ws://localhost:${Env.serverPort}/ws"), onMessageReceived: controller.handleWebSocketMessage);
HeartbeatChecker().startChecking();
Get.put(controller);
}

Future<void> initWindow() async {
Expand All @@ -71,7 +68,7 @@ Future<void> initWindow() async {
await Window.setEffect(effect: WindowEffect.popover, dark: true);
}
if (Platform.isWindows) {
await Window.setEffect(effect: WindowEffect.acrylic,color: Colors.black.withOpacity(0.5));
await Window.setEffect(effect: WindowEffect.acrylic, color: Colors.black.withOpacity(0.5));
}
await windowManager.setAsFrameless();
await windowManager.setResizable(false);
Expand All @@ -80,10 +77,6 @@ Future<void> initWindow() async {
await windowManager.waitUntilReadyToShow(windowOptions);
}

Future<void> initGetX() async {
Get.put(WoxLauncherController());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:uuid/v4.dart';
import 'package:window_manager/window_manager.dart';
import 'package:wox/entity/wox_query.dart';
import 'package:wox/enums/wox_query_type_enum.dart';

import '../wox_launcher_controller.dart';

class WoxQueryBoxView extends GetView<WoxLauncherController> {
Expand All @@ -20,7 +21,7 @@ class WoxQueryBoxView extends GetView<WoxLauncherController> {
if (event is RawKeyDownEvent) {
switch (event.logicalKey) {
case LogicalKeyboardKey.escape:
controller.hide();
controller.hideApp();
break;
case LogicalKeyboardKey.arrowDown:
controller.arrowDown();
Expand All @@ -29,14 +30,15 @@ class WoxQueryBoxView extends GetView<WoxLauncherController> {
controller.arrowUp();
break;
case LogicalKeyboardKey.enter:
controller.selectResult();
controller.handleResultItemAction();
break;
case LogicalKeyboardKey.keyJ:
{
if (event.isMetaPressed) {
controller.toggleActionPanel();
break;
}
return KeyEventResult.ignored;
}
default:
return KeyEventResult.ignored;
Expand All @@ -46,18 +48,16 @@ class WoxQueryBoxView extends GetView<WoxLauncherController> {
return KeyEventResult.ignored;
}),
child: SizedBox(
height: 55,
height: 55.0,
child: TextField(
style: TextStyle(
color: fromCssColor(controller.woxTheme.queryBoxFontColor),
),
decoration: InputDecoration(
contentPadding: const EdgeInsets.only(left: 8, right: 8),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(controller.woxTheme.queryBoxBorderRadius.toDouble()),
borderSide: const BorderSide(
width: 0,
style: BorderStyle.none,
),
borderSide: BorderSide.none,
),
filled: true,
fillColor: fromCssColor(controller.woxTheme.queryBoxBackgroundColor),
Expand All @@ -67,9 +67,9 @@ class WoxQueryBoxView extends GetView<WoxLauncherController> {
focusNode: controller.queryBoxFocusNode,
controller: controller.queryBoxTextFieldController,
onChanged: (value) {
WoxQuery woxQuery =
WoxQuery(queryId: const UuidV4().generate(), queryType: WoxQueryTypeEnum.WOX_QUERY_TYPE_INPUT.code, queryText: value, querySelection: Selection.empty());
controller.onQueryChanged(woxQuery);
WoxChangeQuery woxChangeQuery = WoxChangeQuery(
queryId: const UuidV4().generate(), queryType: WoxQueryTypeEnum.WOX_QUERY_TYPE_INPUT.code, queryText: value, querySelection: Selection.empty());
controller.onQueryChanged(woxChangeQuery);
},
),
))),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,24 @@ class WoxQueryResultView extends GetView<WoxLauncherController> {
bottom: controller.woxTheme.resultContainerPaddingBottom.toDouble(),
left: controller.woxTheme.resultContainerPaddingLeft.toDouble(),
),
child: ListView.builder(
shrinkWrap: true,
physics: const AlwaysScrollableScrollPhysics(),
itemCount: controller.queryResults.length,
itemExtent: 50,
itemBuilder: (context, index) {
WoxQueryResult queryResult = controller.getQueryResultByIndex(index);
return WoxResultItemView(
woxTheme: controller.woxTheme,
icon: queryResult.icon,
title: queryResult.title,
subTitle: queryResult.subTitle,
isActive: index == controller.activeResultIndex.value);
},
),
child: Scrollbar(
controller: controller.scrollController,
child: ListView.builder(
shrinkWrap: true,
physics: const AlwaysScrollableScrollPhysics(),
controller: controller.scrollController,
itemCount: controller.queryResults.length,
itemExtent: controller.getResultHeightByCount(1),
itemBuilder: (context, index) {
WoxQueryResult queryResult = controller.getQueryResultByIndex(index);
return WoxResultItemView(
woxTheme: controller.woxTheme,
icon: queryResult.icon,
title: queryResult.title,
subTitle: queryResult.subTitle,
isActive: index == controller.activeResultIndex.value);
},
)),
),
),
],
Expand Down
Loading

0 comments on commit 49593b7

Please sign in to comment.