refact: remove flutter_improved_scrolling (#10120)
Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
743b0ce8ce
commit
082a66b282
@ -2730,30 +2730,6 @@ Future<bool> osxRequestAudio() async {
|
|||||||
return await kMacOSPermChannel.invokeMethod("requestRecordAudio");
|
return await kMacOSPermChannel.invokeMethod("requestRecordAudio");
|
||||||
}
|
}
|
||||||
|
|
||||||
class DraggableNeverScrollableScrollPhysics extends ScrollPhysics {
|
|
||||||
/// Creates scroll physics that does not let the user scroll.
|
|
||||||
const DraggableNeverScrollableScrollPhysics({super.parent});
|
|
||||||
|
|
||||||
@override
|
|
||||||
DraggableNeverScrollableScrollPhysics applyTo(ScrollPhysics? ancestor) {
|
|
||||||
return DraggableNeverScrollableScrollPhysics(parent: buildParent(ancestor));
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool shouldAcceptUserOffset(ScrollMetrics position) {
|
|
||||||
// TODO: find a better solution to check if the offset change is caused by the scrollbar.
|
|
||||||
// Workaround: when dragging with the scrollbar, it always triggers an [IdleScrollActivity].
|
|
||||||
if (position is ScrollPositionWithSingleContext) {
|
|
||||||
// ignore: invalid_use_of_protected_member, invalid_use_of_visible_for_testing_member
|
|
||||||
return position.activity is IdleScrollActivity;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool get allowImplicitScrolling => false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Widget futureBuilder(
|
Widget futureBuilder(
|
||||||
{required Future? future, required Widget Function(dynamic data) hasData}) {
|
{required Future? future, required Widget Function(dynamic data) hasData}) {
|
||||||
return FutureBuilder(
|
return FutureBuilder(
|
||||||
|
@ -5,7 +5,6 @@ import 'package:dynamic_layouts/dynamic_layouts.dart';
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_hbb/consts.dart';
|
import 'package:flutter_hbb/consts.dart';
|
||||||
import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart';
|
|
||||||
import 'package:flutter_hbb/models/ab_model.dart';
|
import 'package:flutter_hbb/models/ab_model.dart';
|
||||||
import 'package:flutter_hbb/models/peer_tab_model.dart';
|
import 'package:flutter_hbb/models/peer_tab_model.dart';
|
||||||
import 'package:flutter_hbb/models/state_model.dart';
|
import 'package:flutter_hbb/models/state_model.dart';
|
||||||
@ -271,33 +270,24 @@ class _PeersViewState extends State<_PeersView>
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
: peerCardUiType.value == PeerUiType.list
|
: peerCardUiType.value == PeerUiType.list
|
||||||
? DesktopScrollWrapper(
|
? ListView.builder(
|
||||||
scrollController: _scrollController,
|
|
||||||
child: ListView.builder(
|
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
itemCount: peers.length,
|
itemCount: peers.length,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return buildOnePeer(peers[index], false)
|
return buildOnePeer(peers[index], false).marginOnly(
|
||||||
.marginOnly(
|
|
||||||
right: space,
|
right: space,
|
||||||
top: index == 0 ? 0 : space / 2,
|
top: index == 0 ? 0 : space / 2,
|
||||||
bottom: space / 2);
|
bottom: space / 2);
|
||||||
}),
|
},
|
||||||
)
|
)
|
||||||
: DesktopScrollWrapper(
|
: DynamicGridView.builder(
|
||||||
scrollController: _scrollController,
|
|
||||||
child: DynamicGridView.builder(
|
|
||||||
controller: _scrollController,
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
gridDelegate: SliverGridDelegateWithWrapping(
|
gridDelegate: SliverGridDelegateWithWrapping(
|
||||||
mainAxisSpacing: space / 2,
|
mainAxisSpacing: space / 2,
|
||||||
crossAxisSpacing: space),
|
crossAxisSpacing: space),
|
||||||
itemCount: peers.length,
|
itemCount: peers.length,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return buildOnePeer(peers[index], false);
|
return buildOnePeer(peers[index], false);
|
||||||
}),
|
}));
|
||||||
));
|
|
||||||
|
|
||||||
if (updateEvent == UpdateEvent.load) {
|
if (updateEvent == UpdateEvent.load) {
|
||||||
_curPeers.clear();
|
_curPeers.clear();
|
||||||
|
@ -244,10 +244,6 @@ const double kDesktopIconButtonSplashRadius = 20;
|
|||||||
/// [kMinCursorSize] indicates min cursor (w, h)
|
/// [kMinCursorSize] indicates min cursor (w, h)
|
||||||
const int kMinCursorSize = 12;
|
const int kMinCursorSize = 12;
|
||||||
|
|
||||||
/// [kDefaultScrollAmountMultiplier] indicates how many rows can be scrolled after a minimum scroll action of mouse
|
|
||||||
const kDefaultScrollAmountMultiplier = 5.0;
|
|
||||||
const kDefaultScrollDuration = Duration(milliseconds: 50);
|
|
||||||
const kDefaultMouseWheelThrottleDuration = Duration(milliseconds: 50);
|
|
||||||
const kFullScreenEdgeSize = 0.0;
|
const kFullScreenEdgeSize = 0.0;
|
||||||
const kMaximizeEdgeSize = 0.0;
|
const kMaximizeEdgeSize = 0.0;
|
||||||
// Do not use kWindowResizeEdgeSize directly. Use `windowResizeEdgeSize` in `common.dart` instead.
|
// Do not use kWindowResizeEdgeSize directly. Use `windowResizeEdgeSize` in `common.dart` instead.
|
||||||
|
@ -12,7 +12,6 @@ import 'package:flutter_hbb/consts.dart';
|
|||||||
import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
import 'package:flutter_hbb/desktop/pages/connection_page.dart';
|
||||||
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
|
import 'package:flutter_hbb/desktop/pages/desktop_setting_page.dart';
|
||||||
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
import 'package:flutter_hbb/desktop/pages/desktop_tab_page.dart';
|
||||||
import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart';
|
|
||||||
import 'package:flutter_hbb/models/platform_model.dart';
|
import 'package:flutter_hbb/models/platform_model.dart';
|
||||||
import 'package:flutter_hbb/models/server_model.dart';
|
import 'package:flutter_hbb/models/server_model.dart';
|
||||||
import 'package:flutter_hbb/plugin/ui_manager.dart';
|
import 'package:flutter_hbb/plugin/ui_manager.dart';
|
||||||
@ -125,13 +124,10 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
|||||||
child: Container(
|
child: Container(
|
||||||
width: isIncomingOnly ? 280.0 : 200.0,
|
width: isIncomingOnly ? 280.0 : 200.0,
|
||||||
color: Theme.of(context).colorScheme.background,
|
color: Theme.of(context).colorScheme.background,
|
||||||
child: DesktopScrollWrapper(
|
|
||||||
scrollController: _leftPaneScrollController,
|
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
SingleChildScrollView(
|
SingleChildScrollView(
|
||||||
controller: _leftPaneScrollController,
|
controller: _leftPaneScrollController,
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
child: Column(
|
child: Column(
|
||||||
key: _childKey,
|
key: _childKey,
|
||||||
children: children,
|
children: children,
|
||||||
@ -167,7 +163,6 @@ class _DesktopHomePageState extends State<DesktopHomePage>
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ import 'package:get/get.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'package:url_launcher/url_launcher_string.dart';
|
import 'package:url_launcher/url_launcher_string.dart';
|
||||||
import 'package:flutter_hbb/desktop/widgets/scroll_wrapper.dart';
|
|
||||||
|
|
||||||
import '../../common/widgets/dialog.dart';
|
import '../../common/widgets/dialog.dart';
|
||||||
import '../../common/widgets/login.dart';
|
import '../../common/widgets/login.dart';
|
||||||
@ -226,13 +225,11 @@ class _DesktopSettingPageState extends State<DesktopSettingPage>
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Theme.of(context).scaffoldBackgroundColor,
|
color: Theme.of(context).scaffoldBackgroundColor,
|
||||||
child: DesktopScrollWrapper(
|
|
||||||
scrollController: controller,
|
|
||||||
child: PageView(
|
child: PageView(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
physics: NeverScrollableScrollPhysics(),
|
physics: NeverScrollableScrollPhysics(),
|
||||||
children: _children(),
|
children: _children(),
|
||||||
)),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
@ -281,13 +278,10 @@ class _DesktopSettingPageState extends State<DesktopSettingPage>
|
|||||||
|
|
||||||
Widget _listView({required List<_TabInfo> tabs}) {
|
Widget _listView({required List<_TabInfo> tabs}) {
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
return DesktopScrollWrapper(
|
return ListView(
|
||||||
scrollController: scrollController,
|
|
||||||
child: ListView(
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
children: tabs.map((tab) => _listItem(tab: tab)).toList(),
|
children: tabs.map((tab) => _listItem(tab: tab)).toList(),
|
||||||
));
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _listItem({required _TabInfo tab}) {
|
Widget _listItem({required _TabInfo tab}) {
|
||||||
@ -349,10 +343,7 @@ class _GeneralState extends State<_General> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
return DesktopScrollWrapper(
|
return ListView(
|
||||||
scrollController: scrollController,
|
|
||||||
child: ListView(
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
children: [
|
children: [
|
||||||
if (!isWeb) service(),
|
if (!isWeb) service(),
|
||||||
@ -364,7 +355,7 @@ class _GeneralState extends State<_General> {
|
|||||||
if (!isWeb) WaylandCard(),
|
if (!isWeb) WaylandCard(),
|
||||||
other()
|
other()
|
||||||
],
|
],
|
||||||
).marginOnly(bottom: _kListViewBottomMargin));
|
).marginOnly(bottom: _kListViewBottomMargin);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget theme() {
|
Widget theme() {
|
||||||
@ -705,10 +696,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
super.build(context);
|
super.build(context);
|
||||||
return DesktopScrollWrapper(
|
return SingleChildScrollView(
|
||||||
scrollController: scrollController,
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
@ -727,7 +715,7 @@ class _SafetyState extends State<_Safety> with AutomaticKeepAliveClientMixin {
|
|||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)).marginOnly(bottom: _kListViewBottomMargin));
|
)).marginOnly(bottom: _kListViewBottomMargin);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget tfa() {
|
Widget tfa() {
|
||||||
@ -1384,12 +1372,7 @@ class _NetworkState extends State<_Network> with AutomaticKeepAliveClientMixin {
|
|||||||
// TODO: support web proxy
|
// TODO: support web proxy
|
||||||
final hideProxy =
|
final hideProxy =
|
||||||
isWeb || bind.mainGetBuildinOption(key: kOptionHideProxySetting) == 'Y';
|
isWeb || bind.mainGetBuildinOption(key: kOptionHideProxySetting) == 'Y';
|
||||||
return DesktopScrollWrapper(
|
return ListView(controller: scrollController, children: [
|
||||||
scrollController: scrollController,
|
|
||||||
child: ListView(
|
|
||||||
controller: scrollController,
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
children: [
|
|
||||||
_lock(locked, 'Unlock Network Settings', () {
|
_lock(locked, 'Unlock Network Settings', () {
|
||||||
locked = false;
|
locked = false;
|
||||||
setState(() => {});
|
setState(() => {});
|
||||||
@ -1405,7 +1388,7 @@ class _NetworkState extends State<_Network> with AutomaticKeepAliveClientMixin {
|
|||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
),
|
),
|
||||||
]).marginOnly(bottom: _kListViewBottomMargin));
|
]).marginOnly(bottom: _kListViewBottomMargin);
|
||||||
}
|
}
|
||||||
|
|
||||||
server(bool enabled) {
|
server(bool enabled) {
|
||||||
@ -1494,19 +1477,14 @@ class _DisplayState extends State<_Display> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
return DesktopScrollWrapper(
|
return ListView(controller: scrollController, children: [
|
||||||
scrollController: scrollController,
|
|
||||||
child: ListView(
|
|
||||||
controller: scrollController,
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
children: [
|
|
||||||
viewStyle(context),
|
viewStyle(context),
|
||||||
scrollStyle(context),
|
scrollStyle(context),
|
||||||
imageQuality(context),
|
imageQuality(context),
|
||||||
codec(context),
|
codec(context),
|
||||||
if (!isWeb) privacyModeImpl(context),
|
if (!isWeb) privacyModeImpl(context),
|
||||||
other(context),
|
other(context),
|
||||||
]).marginOnly(bottom: _kListViewBottomMargin));
|
]).marginOnly(bottom: _kListViewBottomMargin);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget viewStyle(BuildContext context) {
|
Widget viewStyle(BuildContext context) {
|
||||||
@ -1729,15 +1707,12 @@ class _AccountState extends State<_Account> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
return DesktopScrollWrapper(
|
return ListView(
|
||||||
scrollController: scrollController,
|
|
||||||
child: ListView(
|
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
children: [
|
children: [
|
||||||
_Card(title: 'Account', children: [accountAction(), useInfo()]),
|
_Card(title: 'Account', children: [accountAction(), useInfo()]),
|
||||||
],
|
],
|
||||||
).marginOnly(bottom: _kListViewBottomMargin));
|
).marginOnly(bottom: _kListViewBottomMargin);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget accountAction() {
|
Widget accountAction() {
|
||||||
@ -1834,18 +1809,14 @@ class _PluginState extends State<_Plugin> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
bind.pluginListReload();
|
bind.pluginListReload();
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
return DesktopScrollWrapper(
|
return ChangeNotifierProvider.value(
|
||||||
scrollController: scrollController,
|
|
||||||
child: ChangeNotifierProvider.value(
|
|
||||||
value: pluginManager,
|
value: pluginManager,
|
||||||
child: Consumer<PluginManager>(builder: (context, model, child) {
|
child: Consumer<PluginManager>(builder: (context, model, child) {
|
||||||
return ListView(
|
return ListView(
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
children: model.plugins.map((entry) => pluginCard(entry)).toList(),
|
children: model.plugins.map((entry) => pluginCard(entry)).toList(),
|
||||||
).marginOnly(bottom: _kListViewBottomMargin);
|
).marginOnly(bottom: _kListViewBottomMargin);
|
||||||
}),
|
}),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1897,11 +1868,8 @@ class _AboutState extends State<_About> {
|
|||||||
final fingerprint = data['fingerprint'].toString();
|
final fingerprint = data['fingerprint'].toString();
|
||||||
const linkStyle = TextStyle(decoration: TextDecoration.underline);
|
const linkStyle = TextStyle(decoration: TextDecoration.underline);
|
||||||
final scrollController = ScrollController();
|
final scrollController = ScrollController();
|
||||||
return DesktopScrollWrapper(
|
return SingleChildScrollView(
|
||||||
scrollController: scrollController,
|
|
||||||
child: SingleChildScrollView(
|
|
||||||
controller: scrollController,
|
controller: scrollController,
|
||||||
physics: DraggableNeverScrollableScrollPhysics(),
|
|
||||||
child: _Card(title: translate('About RustDesk'), children: [
|
child: _Card(title: translate('About RustDesk'), children: [
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
@ -1965,7 +1933,7 @@ class _AboutState extends State<_About> {
|
|||||||
],
|
],
|
||||||
).marginOnly(left: _kContentHMargin)
|
).marginOnly(left: _kContentHMargin)
|
||||||
]),
|
]),
|
||||||
));
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:wakelock_plus/wakelock_plus.dart';
|
import 'package:wakelock_plus/wakelock_plus.dart';
|
||||||
import 'package:flutter_improved_scrolling/flutter_improved_scrolling.dart';
|
|
||||||
import 'package:flutter_hbb/models/state_model.dart';
|
import 'package:flutter_hbb/models/state_model.dart';
|
||||||
|
|
||||||
import '../../consts.dart';
|
import '../../consts.dart';
|
||||||
@ -742,12 +741,6 @@ class _ImagePaintState extends State<ImagePaint> {
|
|||||||
ScrollController horizontal,
|
ScrollController horizontal,
|
||||||
ScrollController vertical,
|
ScrollController vertical,
|
||||||
) {
|
) {
|
||||||
final scrollConfig = CustomMouseWheelScrollConfig(
|
|
||||||
scrollDuration: kDefaultScrollDuration,
|
|
||||||
scrollCurve: Curves.linearToEaseOut,
|
|
||||||
mouseWheelTurnsThrottleTimeMs:
|
|
||||||
kDefaultMouseWheelThrottleDuration.inMilliseconds,
|
|
||||||
scrollAmountMultiplier: kDefaultScrollAmountMultiplier);
|
|
||||||
var widget = child;
|
var widget = child;
|
||||||
if (layoutSize.width < size.width) {
|
if (layoutSize.width < size.width) {
|
||||||
widget = ScrollConfiguration(
|
widget = ScrollConfiguration(
|
||||||
@ -793,11 +786,7 @@ class _ImagePaintState extends State<ImagePaint> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (layoutSize.width < size.width) {
|
if (layoutSize.width < size.width) {
|
||||||
widget = ImprovedScrolling(
|
widget = RawScrollbar(
|
||||||
scrollController: horizontal,
|
|
||||||
enableCustomMouseWheelScrolling: cursorOverImage.isFalse,
|
|
||||||
customMouseWheelScrollConfig: scrollConfig,
|
|
||||||
child: RawScrollbar(
|
|
||||||
thickness: kScrollbarThickness,
|
thickness: kScrollbarThickness,
|
||||||
thumbColor: Colors.grey,
|
thumbColor: Colors.grey,
|
||||||
controller: horizontal,
|
controller: horizontal,
|
||||||
@ -807,22 +796,16 @@ class _ImagePaintState extends State<ImagePaint> {
|
|||||||
? (notification) => notification.depth == 1
|
? (notification) => notification.depth == 1
|
||||||
: defaultScrollNotificationPredicate,
|
: defaultScrollNotificationPredicate,
|
||||||
child: widget,
|
child: widget,
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (layoutSize.height < size.height) {
|
if (layoutSize.height < size.height) {
|
||||||
widget = ImprovedScrolling(
|
widget = RawScrollbar(
|
||||||
scrollController: vertical,
|
|
||||||
enableCustomMouseWheelScrolling: cursorOverImage.isFalse,
|
|
||||||
customMouseWheelScrollConfig: scrollConfig,
|
|
||||||
child: RawScrollbar(
|
|
||||||
thickness: kScrollbarThickness,
|
thickness: kScrollbarThickness,
|
||||||
thumbColor: Colors.grey,
|
thumbColor: Colors.grey,
|
||||||
controller: vertical,
|
controller: vertical,
|
||||||
thumbVisibility: false,
|
thumbVisibility: false,
|
||||||
trackVisibility: false,
|
trackVisibility: false,
|
||||||
child: widget,
|
child: widget,
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
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: true,
|
|
||||||
// enableKeyboardScrolling: true, // strange behavior on mac
|
|
||||||
customMouseWheelScrollConfig: CustomMouseWheelScrollConfig(
|
|
||||||
scrollDuration: kDefaultScrollDuration,
|
|
||||||
scrollCurve: Curves.linearToEaseOut,
|
|
||||||
mouseWheelTurnsThrottleTimeMs:
|
|
||||||
kDefaultMouseWheelThrottleDuration.inMilliseconds,
|
|
||||||
scrollAmountMultiplier: kDefaultScrollAmountMultiplier),
|
|
||||||
child: child,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -530,15 +530,6 @@ packages:
|
|||||||
url: "https://github.com/rustdesk-org/flutter_gpu_texture_renderer"
|
url: "https://github.com/rustdesk-org/flutter_gpu_texture_renderer"
|
||||||
source: git
|
source: git
|
||||||
version: "0.0.1"
|
version: "0.0.1"
|
||||||
flutter_improved_scrolling:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "."
|
|
||||||
ref: HEAD
|
|
||||||
resolved-ref: "62f09545149f320616467c306c8c5f71714a18e6"
|
|
||||||
url: "https://github.com/rustdesk-org/flutter_improved_scrolling"
|
|
||||||
source: git
|
|
||||||
version: "0.0.3"
|
|
||||||
flutter_keyboard_visibility:
|
flutter_keyboard_visibility:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -71,13 +71,6 @@ dependencies:
|
|||||||
debounce_throttle: ^2.0.0
|
debounce_throttle: ^2.0.0
|
||||||
file_picker: ^5.1.0
|
file_picker: ^5.1.0
|
||||||
flutter_svg: ^2.0.5
|
flutter_svg: ^2.0.5
|
||||||
flutter_improved_scrolling:
|
|
||||||
# currently, we use flutter 3.10.0+.
|
|
||||||
#
|
|
||||||
# for flutter 3.0.5, please use official version(just comment code below).
|
|
||||||
# if build rustdesk by flutter >=3.3, please use our custom pub below (uncomment code below).
|
|
||||||
git:
|
|
||||||
url: https://github.com/rustdesk-org/flutter_improved_scrolling
|
|
||||||
uni_links:
|
uni_links:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/rustdesk-org/uni_links
|
url: https://github.com/rustdesk-org/uni_links
|
||||||
|
Loading…
x
Reference in New Issue
Block a user