gpt4 book ai didi

android - 子部件的 Flutter setState 无需重建父部件

转载 作者:IT王子 更新时间:2023-10-29 07:08:43 30 4
gpt4 key购买 nike

我有一个父级包含一个 listView 和一个 floatingActionButton 我想在用户开始滚动时隐藏 floatingActionButton 我已经管理在父小部件中执行此操作,但这需要每次都重建列表。

我已将 floatingActionButton 移动到一个单独的类中,这样我就可以更新状态并仅重建该小部件我遇到的问题是从 ScrollController 中传递数据子类的父类这在通过导航完成时很简单,但在不重建父类的情况下接缝但更尴尬!

最佳答案

当父级中的值发生变化时,只重建一个子小部件的一个好方法是使用ValueNotifier。和 ValueListenableBuilder .将 ValueNotifier 的实例添加到父级的状态类,并将要重建的小部件包装在 ValueListenableBuilder 中。

当您想要更改值时,使用通知程序而不调用setState,子小部件将使用新值重建。

import 'package:flutter/material.dart';

class Parent extends StatefulWidget {
@override
_ParentState createState() => _ParentState();
}

class _ParentState extends State<Parent> {
ValueNotifier<bool> _notifier = ValueNotifier(false);

@override
Widget build(BuildContext context) {
return Column(
children: [
ElevatedButton(onPressed: () => _notifier.value = !_notifier.value, child: Text('toggle')),
ValueListenableBuilder(
valueListenable: _notifier,
builder: (BuildContext context, bool val, Widget child) {
return Text(val.toString());
}),
],
);
}

@override
void dispose() {
_notifier.dispose();

super.dispose();
}
}

关于android - 子部件的 Flutter setState 无需重建父部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51725031/

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