gpt4 book ai didi

dart - flutter 获取布局渲染事件

转载 作者:IT王子 更新时间:2023-10-29 06:41:41 25 4
gpt4 key购买 nike

为了在显示后立即使用 ScrollController 滚动 ListView,我必须延迟调用 animateTo 函数,否则在调用 animateTo 函数时不会呈现布局。

有没有办法获取布局渲染事件,然后调用 animateTo 函数或除了使用 Timer 之外的其他解决方案?

class MainPageState extends State<MainPage> {

bool listViewVisible = false;
ScrollController _scrollController = new ScrollController();

@override
Widget build(BuildContext context) {
return new Container(
child: !listViewVisible ? null :
new ListView(
controller: _scrollController,
children: <Widget>[
//Some Items
],
),
);
}

//does not work
void showAndScrollListViewWithoutTimer() {
setState(() {
listViewVisible = true;
});

_scrollController.animateTo(100.0,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOut);
}

//works
void showAndScrollListViewWithTimer() {
setState(() {
listViewVisible = true;
});

new Timer(const Duration(milliseconds: 500), () {
_scrollController.animateTo(100.0,
duration: const Duration(milliseconds: 300),
curve: Curves.easeOut);
});
}

最佳答案

刚刚发布的包https://pub.dartlang.org/packages?q=after_layout为此提供了一个 mixin。

它使用

WidgetsBinding.instance
.addPostFrameCallback((_) => afterFirstLayout(context));

关于dart - flutter 获取布局渲染事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com