Cuộn là thao tác người dùng cảm nhận nhiều nhất nhưng mô tả được ít nhất. “Nó rề rà”, “nó không dừng ở chỗ tôi tưởng”, “trên Android nó nảy sai”. Tất cả những lời phàn nàn đó đều trỏ về một lớp nhỏ: ScrollPhysics . Phần lớn lập trình viên Flutter chỉ gặp nó qua ba lớp con có tên sẵn — BouncingScrollPhysics , ClampingScrollPhysics , NeverScrollableScrollPhysics . Bên dưới, đó là một interface gọn với bốn điểm quyết định, và hiểu chúng biến “danh sách dừng ở chỗ kỳ quặc” từ một bí ẩn thành bản sửa hai dòng. Lớp này thật sự quyết định điều gì Phương thức Quyết định applyPhysicsToUserOffset Chuyển động của ngón tay ánh xạ sang offset cuộn ra sao — độ kháng khi overscroll applyBoundaryConditions Từ chối bao nhiêu phần của offset được yêu cầu khi ở mép createBallisticSimulation Chuyện gì xảy ra sau khi nhấc tay: fling, ổn định, snap, hay không gì cả tolerance Khi nào một simulation được coi là kết thúc Cộng thêm hai thuộc tính đáng biết: shouldAcceptUserOffset (...