reduce rebuild

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-03-17 14:38:10 +08:00
parent 8a8aa6c1e0
commit d6579b29ae
23 changed files with 254 additions and 214 deletions

View File

@@ -95,57 +95,57 @@ class _LiveAreaPageState extends State<LiveAreaPage> {
children: response
.map(
(e) => KeepAliveWrapper(
builder: (context) {
if (e.areaList.isNullOrEmpty) {
return const SizedBox.shrink();
}
return GridView.builder(
padding: EdgeInsets.only(
top: 12,
bottom: bottom + 100,
),
gridDelegate:
const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 100,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
mainAxisExtent: 80,
child: e.areaList.isNullOrEmpty
? const SizedBox.shrink()
: GridView.builder(
padding: EdgeInsets.only(
top: 12,
bottom: bottom + 100,
),
itemCount: e.areaList!.length,
itemBuilder: (context, index) {
final item = e.areaList![index];
return _tagItem(
theme: theme,
item: item,
onPressed: () {
// success
bool? isFav =
_controller.favInfo[item.id];
if (isFav == true) {
_controller.favInfo[item.id] = false;
_controller.favState
..value.data.remove(item)
..refresh();
(context as Element).markNeedsBuild();
} else {
// check
if (_controller
.favState
.value
.isSuccess) {
_controller.favInfo[item.id] = true;
_controller.favState
..value.data.add(item)
..refresh();
(context as Element)
.markNeedsBuild();
}
}
gridDelegate:
const SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: 100,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
mainAxisExtent: 80,
),
itemCount: e.areaList!.length,
itemBuilder: (context, index) {
final item = e.areaList![index];
return _tagItem(
theme: theme,
item: item,
onPressed: () {
// success
bool? isFav =
_controller.favInfo[item.id];
if (isFav == true) {
_controller.favInfo[item.id] =
false;
_controller.favState
..value.data.remove(item)
..refresh();
(context as Element)
.markNeedsBuild();
} else {
// check
if (_controller
.favState
.value
.isSuccess) {
_controller.favInfo[item.id] =
true;
_controller.favState
..value.data.add(item)
..refresh();
(context as Element)
.markNeedsBuild();
}
}
},
);
},
);
},
);
},
),
),
)
.toList(),