【发布时间】:2021-07-14 10:40:12
【问题描述】:
这是我得到的完整错误;
错误:
'CustomScrollPhysics.applyTo' ('ScrollPhysics Function(ScrollPhysics)') 不是有效的覆盖 'ScrollPhysics.applyTo'('ScrollPhysics 函数(ScrollPhysics?)')。 (invalid_override at [testingfile] lib\main.dart:77)
我正在尝试使用滚动物理来计算列表视图的速度。 代码如下。
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:math' as math;
Future<void> main () async => runApp(MyApp()); ///Becasue of using layout builder widget as scaffold.
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Material(
color: Colors.black38,
child: Center(
child: ConstrainedBox(
constraints: BoxConstraints(
maxWidth: 400.0,
maxHeight: constraints.maxHeight,
),
child: ListView.builder(
physics: CustomScrollPhysics(),
itemExtent: 250.0, ///each box take specif space
itemBuilder: (BuildContext context, int index) => Container(
padding: EdgeInsets.symmetric(vertical: 9.0),
child: Material(
elevation: 4.0,
borderRadius: BorderRadius.circular(5.0),
color:
index % 2 == 0 ? Colors.cyan: Colors.deepOrange,
child: Center(
child: Text(index.toString()),
),
),
),
),
),
),
);
},
),
);
}
}
class CustomSimulation extends Simulation {
final double initPosition;
final double velocity;
CustomSimulation({required this.initPosition, required this.velocity});
@override
double x(double time) {
var max = math.max(math.min(initPosition, 0.0), initPosition + velocity * time);
print(max.toString());
return max;
}
@override
double dx(double time) {
print(velocity.toString());
return velocity;
}
@override
bool isDone(double time) {
return false;
}
}
class CustomScrollPhysics extends ScrollPhysics {
@override
ScrollPhysics applyTo(ScrollPhysics ancestor) {
return CustomScrollPhysics();
}
@override
Simulation createBallisticSimulation(
ScrollMetrics position, double velocity) {
return CustomSimulation(
initPosition: position.pixels,
velocity: velocity,
);
}
}
任何帮助将不胜感激!
【问题讨论】:
标签: android flutter android-studio dart