你可以看到有一個紅色的水平SingleChildScrollView,每當我點擊滾動按鈕時,它的偏移量將增加20。
以下是我的代碼:
import 'package:flutter/material.dart'。
import 'package:flutter_storage/managers/screen_util.dart';
class DraftPage extends StatefulWidget{
DraftPage({Key key}) : super(key: 關鍵)。
@override
_DraftPageState createState() => _DraftPageState()。
}
class _DraftPageState extends State < DraftPage> {
int index = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
標題。Text('Test'),
),
body: 列(
兒童。[
SizedBox(
width: ScreenUtil.screenWidth,
高度。30。
孩子。_LineView(currentIndex: index),
),
SizedBox(高度:20)。
升起的按鈕(
孩子。Text('roll')。
onPressed: () {
setState(() {
index ;
});
},
),
],
),
);
}
}
class _LineView extends StatelessWidget{
const _LineView({Key key, @required this.currentIndex}) 。super(key: 關鍵)。
final int currentIndex;
@override
Widget build(BuildContext context) {
final offset = currentIndex * 20.0;
print(offset)。
final controller =
ScrollController(initialScrollOffset: offset, keepScrollOffset: false)。)
controller.addListener(() {
print(controller.offset)。
});
final row = Row(
兒童。[
容器(
width: 1000,
高度。30。
color: Colors.red,
孩子。Text('666666666666666666666'),
),
],
);
final scrollView = SingleChildScrollView(
控制器:控制器。
scrollDirection: Axis.horizontal,
child: row,
);
return scrollView。
}
然而,當我點擊滾動按鈕時,scrollView的偏移量完全沒有變化。
我的代碼有什么問題嗎?
你可以復制我的代碼并進行測驗。
uj5u.com熱心網友回復:
一個骯臟的修復方法是添加一個key。Key(offset.toString())到你的SingleChildScrollView。這是因為這個視圖并沒有被告知在構建程序中發生了一些變化。
一個干凈的解決方案是讓_LineView接受一個scrollController,然后當按下按鈕時,使用scrollController.jumpTo來進行偏移。該控制器的處置可以在你的DraftPage中完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/313090.html
標籤:
上一篇:如何讓按鈕顯示在地圖活動上

