Flutter. Как изменить скорость прокрутки в ListView на ролике мыши?

Я новичок. Пишу приложение на Flutter под Windows. Проблема в том что текст в ListView слишком медленно прокручивается роликом мыши. Я пробовал переопределить ScrollPhysics, но не получилось. Дайте пожалуйста рабочий способ изменить скорость прокрутки.


Ответы (1 шт):

Автор решения: Max

Получил ответ на англоязычном stackoverflow. Копирую здесь может кому понадобится.

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.black,
        body: ScrollViewTest(),
      ),
    );
  }
}

class ScrollViewTest extends StatelessWidget{

  static const _extraScrollSpeed = 1000; // your "extra" scroll speed
  final ScrollController _scrollController = ScrollController();

  // Constructor

  ScrollViewTest({Key? key}) : super(key: key)
  {
    _scrollController.addListener(() {
      ScrollDirection scrollDirection = _scrollController.position.userScrollDirection;
      if (scrollDirection != ScrollDirection.idle)
      {
        double scrollEnd = _scrollController.offset + (scrollDirection == ScrollDirection.reverse
            ? _extraScrollSpeed
            : -_extraScrollSpeed);
        scrollEnd = min(
            _scrollController.position.maxScrollExtent,
            max(_scrollController.position.minScrollExtent, scrollEnd));
        _scrollController.jumpTo(scrollEnd);
      }
    });
  }

  @override

  Widget build(BuildContext context)
  {

    return ListView(
      controller: _scrollController,
      children: [Text(
        '''
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        ''',
        style: TextStyle(color: Colors.white, fontSize: 30,),
      ),
    ],);
  }
}
→ Ссылка