我正在創建一個串列視圖,在其中添加影片。這個想法是第一項的轉換將居中。并且下面的專案將與 X 軸成 45 度。但我面臨的問題是,當串列滾動并且第一項超出螢屏時,我想讓下一個索引居中(距 X 軸 0 度)。這一直持續到最后一個索引/專案居中。我怎樣才能做到這一點?
ListView.builder(
itemCount: posts.length,
itemBuilder: (context, index) {
final item = posts[index];
return Transform(
transform: Matrix4.identity()..setEntry(3,2,0.001)..rotateX(index != 0 ? 45 : 0),
child: Container(
height: 200,
width: 300,
child: Center(
child: Text(index.toString())
)
)
);
},
)
uj5u.com熱心網友回復:
嘗試ScrollController獲取當前位置。同樣在這里,每個專案都具有相同的高度。
final itemHeight = 200.0;
int topIndex = 0;
late final ScrollController constroller = ScrollController()
..addListener(() {
final currentPoss = constroller.offset;
topIndex = currentPoss ~/ itemHeight;
setState(() {});
});
return Transform(
transform: Matrix4.identity()
..setEntry(3, 2, 0.001)
..rotateX(index == topIndex ? 0 : 45),
class TFA extends StatefulWidget {
const TFA({super.key});
@override
State<TFA> createState() => _TFAState();
}
class _TFAState extends State<TFA> {
final itemHeight = 200.0;
int topIndex = 0;
late final ScrollController constroller = ScrollController()
..addListener(() {
final currentPoss = constroller.offset;
topIndex = currentPoss ~/ itemHeight;
setState(() {});
});
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: 44,
controller: constroller,
itemBuilder: (context, index) {
return Transform(
transform: Matrix4.identity()
..setEntry(3, 2, 0.001)
..rotateX(index == topIndex ? 0 : 45),
child: Container(
height: itemHeight,
width: 300,
child: Center(
child: Text(
index.toString(),
),
),
),
);
},
),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531218.html
上一篇:如何使用Windows身份驗證將Django連接到MSSQL
下一篇:如何使用Keras指定輸入層
