opt. & new: icons
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:toolbox/view/widget/val_builder.dart';
|
||||
|
||||
import '../../core/persistant_store.dart';
|
||||
|
||||
@@ -22,9 +23,9 @@ class StoreSwitch extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder(
|
||||
valueListenable: prop.listenable(),
|
||||
builder: (context, bool value, widget) {
|
||||
return ValBuilder(
|
||||
listenable: prop.listenable(),
|
||||
builder: (value) {
|
||||
return Switch(
|
||||
value: value,
|
||||
onChanged: (value) async {
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:toolbox/core/extension/context/locale.dart';
|
||||
import 'package:toolbox/data/res/ui.dart';
|
||||
import 'package:toolbox/view/widget/input_field.dart';
|
||||
import 'package:toolbox/view/widget/cardx.dart';
|
||||
import 'package:toolbox/view/widget/val_builder.dart';
|
||||
|
||||
import '../../data/res/color.dart';
|
||||
|
||||
@@ -196,9 +197,9 @@ class TagSwitcher extends StatelessWidget implements PreferredSizeWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder(
|
||||
valueListenable: tags,
|
||||
builder: (_, vals, __) {
|
||||
return ValBuilder(
|
||||
listenable: tags,
|
||||
builder: (vals) {
|
||||
if (vals.isEmpty) return UIs.placeholder;
|
||||
final items = <String?>[null, ...vals];
|
||||
return Container(
|
||||
|
||||
35
lib/view/widget/val_builder.dart
Normal file
35
lib/view/widget/val_builder.dart
Normal file
@@ -0,0 +1,35 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
final class ValBuilder<T> extends ValueListenableBuilder<T> {
|
||||
ValBuilder({
|
||||
super.key,
|
||||
required ValueListenable<T> listenable,
|
||||
required Widget Function(T) builder,
|
||||
}) : super(
|
||||
valueListenable: listenable,
|
||||
builder: (_, val, __) => builder(val),
|
||||
);
|
||||
}
|
||||
|
||||
final class ValChildBuilder<T> extends ValueListenableBuilder<T> {
|
||||
ValChildBuilder({
|
||||
super.key,
|
||||
required ValueListenable<T> listenable,
|
||||
required Widget Function(T, Widget?) builder,
|
||||
super.child,
|
||||
}) : super(
|
||||
valueListenable: listenable,
|
||||
builder: (_, val, child) => builder(val, child),
|
||||
);
|
||||
}
|
||||
|
||||
final class ListenBuilder extends ListenableBuilder {
|
||||
ListenBuilder({
|
||||
super.key,
|
||||
required super.listenable,
|
||||
required Widget Function() builder,
|
||||
}) : super(
|
||||
builder: (_, __) => builder(),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user