Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
rustdesk
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李朝发
rustdesk
Commits
0df6517a
Unverified
Commit
0df6517a
authored
Sep 19, 2022
by
RustDesk
Committed by
GitHub
Sep 19, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1582 from Kingtous/master
opt: more configurable scroll logic & edge size
parents
bf1314f9
c2f516f5
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
90 additions
and
47 deletions
+90
-47
common.dart
flutter/lib/common.dart
+1
-0
consts.dart
flutter/lib/consts.dart
+5
-0
desktop_tab_page.dart
flutter/lib/desktop/pages/desktop_tab_page.dart
+3
-1
file_manager_tab_page.dart
flutter/lib/desktop/pages/file_manager_tab_page.dart
+2
-0
port_forward_tab_page.dart
flutter/lib/desktop/pages/port_forward_tab_page.dart
+2
-0
remote_tab_page.dart
flutter/lib/desktop/pages/remote_tab_page.dart
+2
-1
peer_widget.dart
flutter/lib/desktop/widgets/peer_widget.dart
+52
-45
scroll_wrapper.dart
flutter/lib/desktop/widgets/scroll_wrapper.dart
+22
-0
pubspec.yaml
flutter/pubspec.yaml
+1
-0
No files found.
flutter/lib/common.dart
View file @
0df6517a
...
...
@@ -248,6 +248,7 @@ List<Locale> supportedLocales = const [
// specify CN/TW to fix CJK issue in flutter
Locale
(
'zh'
,
'CN'
),
Locale
(
'zh'
,
'TW'
),
Locale
(
'zh'
,
'SG'
),
Locale
(
'fr'
),
Locale
(
'de'
),
Locale
(
'it'
),
...
...
flutter/lib/consts.dart
View file @
0df6517a
...
...
@@ -15,6 +15,11 @@ const int kMobileDefaultDisplayHeight = 1280;
const
int
kDesktopDefaultDisplayWidth
=
1080
;
const
int
kDesktopDefaultDisplayHeight
=
720
;
/// [kDefaultScrollAmountMultiplier] indicates how many rows can be scrolled after a minimum scroll action of mouse
const
kDefaultScrollAmountMultiplier
=
3.0
;
const
kFullScreenEdgeSize
=
1.0
;
const
kWindowEdgeSize
=
4.0
;
const
kInvalidValueStr
=
"InvalidValueStr"
;
/// flutter/packages/flutter/lib/src/services/keyboard_key.dart -> _keyLabels
...
...
flutter/lib/desktop/pages/desktop_tab_page.dart
View file @
0df6517a
...
...
@@ -60,7 +60,9 @@ class _DesktopTabPageState extends State<DesktopTabPage> {
return
Platform
.
isMacOS
?
tabWidget
:
Obx
(()
=>
DragToResizeArea
(
resizeEdgeSize:
fullscreen
.
value
?
1.0
:
8.0
,
child:
tabWidget
));
resizeEdgeSize:
fullscreen
.
value
?
kFullScreenEdgeSize
:
kWindowEdgeSize
,
child:
tabWidget
));
}
void
onAddSetting
()
{
...
...
flutter/lib/desktop/pages/file_manager_tab_page.dart
View file @
0df6517a
...
...
@@ -4,6 +4,7 @@ import 'dart:io';
import
'package:desktop_multi_window/desktop_multi_window.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_hbb/common.dart'
;
import
'package:flutter_hbb/consts.dart'
;
import
'package:flutter_hbb/desktop/pages/file_manager_page.dart'
;
import
'package:flutter_hbb/desktop/widgets/tabbar_widget.dart'
;
import
'package:flutter_hbb/utils/multi_window_manager.dart'
;
...
...
@@ -81,6 +82,7 @@ class _FileManagerTabPageState extends State<FileManagerTabPage> {
return
Platform
.
isMacOS
?
tabWidget
:
SubWindowDragToResizeArea
(
resizeEdgeSize:
kWindowEdgeSize
,
windowId:
windowId
(),
child:
tabWidget
,
);
...
...
flutter/lib/desktop/pages/port_forward_tab_page.dart
View file @
0df6517a
...
...
@@ -4,6 +4,7 @@ import 'dart:io';
import
'package:desktop_multi_window/desktop_multi_window.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_hbb/common.dart'
;
import
'package:flutter_hbb/consts.dart'
;
import
'package:flutter_hbb/desktop/pages/port_forward_page.dart'
;
import
'package:flutter_hbb/desktop/widgets/tabbar_widget.dart'
;
import
'package:flutter_hbb/utils/multi_window_manager.dart'
;
...
...
@@ -92,6 +93,7 @@ class _PortForwardTabPageState extends State<PortForwardTabPage> {
return
Platform
.
isMacOS
?
tabWidget
:
SubWindowDragToResizeArea
(
resizeEdgeSize:
kWindowEdgeSize
,
windowId:
windowId
(),
child:
tabWidget
,
);
...
...
flutter/lib/desktop/pages/remote_tab_page.dart
View file @
0df6517a
...
...
@@ -143,7 +143,8 @@ class _ConnectionTabPageState extends State<ConnectionTabPage> {
return
Platform
.
isMacOS
?
tabWidget
:
Obx
(()
=>
SubWindowDragToResizeArea
(
resizeEdgeSize:
fullscreen
.
value
?
1.0
:
8.0
,
resizeEdgeSize:
fullscreen
.
value
?
kFullScreenEdgeSize
:
kWindowEdgeSize
,
windowId:
windowId
(),
child:
tabWidget
));
}
...
...
flutter/lib/desktop/widgets/peer_widget.dart
View file @
0df6517a
...
...
@@ -2,6 +2,7 @@ import 'dart:async';
import
'package:flutter/foundation.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart'
;
import
'package:get/get.dart'
;
import
'package:provider/provider.dart'
;
import
'package:visibility_detector/visibility_detector.dart'
;
...
...
@@ -41,6 +42,7 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener {
static
const
int
_maxQueryCount
=
3
;
final
_curPeers
=
<
String
>{};
final
_scrollController
=
ScrollController
();
var
_lastChangeTime
=
DateTime
.
now
();
var
_lastQueryPeers
=
<
String
>{};
var
_lastQueryTime
=
DateTime
.
now
().
subtract
(
const
Duration
(
hours:
1
));
...
...
@@ -84,53 +86,58 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener {
?
Center
(
child:
Text
(
translate
(
"Empty"
)),
)
:
SingleChildScrollView
(
controller:
ScrollController
(),
child:
ObxValue
<
RxString
>((
searchText
)
{
return
FutureBuilder
<
List
<
Peer
>>(
builder:
(
context
,
snapshot
)
{
if
(
snapshot
.
hasData
)
{
final
peers
=
snapshot
.
data
!;
final
cards
=
<
Widget
>[];
for
(
final
peer
in
peers
)
{
cards
.
add
(
Offstage
(
key:
ValueKey
(
"off
${peer.id}
"
),
offstage:
widget
.
offstageFunc
(
peer
),
child:
Obx
(
()
=>
SizedBox
(
width:
220
,
height:
peerCardUiType
.
value
==
PeerUiType
.
grid
?
140
:
42
,
child:
VisibilityDetector
(
key:
ValueKey
(
peer
.
id
),
onVisibilityChanged:
(
info
)
{
final
peerId
=
(
info
.
key
as
ValueKey
).
value
;
if
(
info
.
visibleFraction
>
0.00001
)
{
_curPeers
.
add
(
peerId
);
}
else
{
_curPeers
.
remove
(
peerId
);
}
_lastChangeTime
=
DateTime
.
now
();
},
child:
widget
.
peerCardWidgetFunc
(
peer
),
:
DesktopScrollWrapper
(
scrollController:
_scrollController
,
child:
SingleChildScrollView
(
controller:
_scrollController
,
child:
ObxValue
<
RxString
>((
searchText
)
{
return
FutureBuilder
<
List
<
Peer
>>(
builder:
(
context
,
snapshot
)
{
if
(
snapshot
.
hasData
)
{
final
peers
=
snapshot
.
data
!;
final
cards
=
<
Widget
>[];
for
(
final
peer
in
peers
)
{
cards
.
add
(
Offstage
(
key:
ValueKey
(
"off
${peer.id}
"
),
offstage:
widget
.
offstageFunc
(
peer
),
child:
Obx
(
()
=>
SizedBox
(
width:
220
,
height:
peerCardUiType
.
value
==
PeerUiType
.
grid
?
140
:
42
,
child:
VisibilityDetector
(
key:
ValueKey
(
peer
.
id
),
onVisibilityChanged:
(
info
)
{
final
peerId
=
(
info
.
key
as
ValueKey
).
value
;
if
(
info
.
visibleFraction
>
0.00001
)
{
_curPeers
.
add
(
peerId
);
}
else
{
_curPeers
.
remove
(
peerId
);
}
_lastChangeTime
=
DateTime
.
now
();
},
child:
widget
.
peerCardWidgetFunc
(
peer
),
),
),
),
)));
)));
}
return
Wrap
(
spacing:
space
,
runSpacing:
space
,
children:
cards
);
}
else
{
return
const
Center
(
child:
CircularProgressIndicator
(),
);
}
return
Wrap
(
spacing:
space
,
runSpacing:
space
,
children:
cards
);
}
else
{
return
const
Center
(
child:
CircularProgressIndicator
(),
);
}
},
future:
matchPeers
(
searchText
.
value
,
peers
.
peers
),
);
},
peerSearchText
),
},
future:
matchPeers
(
searchText
.
value
,
peers
.
peers
),
);
},
peerSearchText
),
),
),
),
);
...
...
flutter/lib/desktop/widgets/scroll_wrapper.dart
0 → 100644
View file @
0df6517a
import
'package:flutter/widgets.dart'
;
import
'package:flutter_hbb/consts.dart'
;
import
'package:flutter_improved_scrolling/flutter_improved_scrolling.dart'
;
class
DesktopScrollWrapper
extends
StatelessWidget
{
final
ScrollController
scrollController
;
final
Widget
child
;
const
DesktopScrollWrapper
(
{
Key
?
key
,
required
this
.
scrollController
,
required
this
.
child
})
:
super
(
key:
key
);
@override
Widget
build
(
BuildContext
context
)
{
return
ImprovedScrolling
(
scrollController:
scrollController
,
enableCustomMouseWheelScrolling:
false
,
customMouseWheelScrollConfig:
const
CustomMouseWheelScrollConfig
(
scrollAmountMultiplier:
kDefaultScrollAmountMultiplier
),
child:
child
,
);
}
}
flutter/pubspec.yaml
View file @
0df6517a
...
...
@@ -80,6 +80,7 @@ dependencies:
desktop_drop
:
^0.3.3
scroll_pos
:
^0.3.0
rxdart
:
^0.27.5
flutter_improved_scrolling
:
^0.0.3
dev_dependencies
:
icons_launcher
:
^2.0.4
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment