Files
packages.dart/deprecated/features/lib/src/builder.dart
T
2026-01-15 14:38:46 -08:00

45 lines
1.1 KiB
Dart

import 'package:flutter/material.dart';
import 'feature.dart';
import 'provider.dart';
class FeatureBuilder extends StatelessWidget {
final String? featureKey;
final Feature? feature;
final Widget? child;
final Widget Function(BuildContext, bool, Widget?) builder;
final bool hideOnInactive;
const FeatureBuilder({
Key? key,
required this.builder,
this.featureKey,
this.child,
this.feature,
this.hideOnInactive = false,
}) : super(key: key);
@override
Widget build(BuildContext context) {
final _features = Features.of(context);
final _feature = feature ??
_features?.items.firstWhere((element) => element.key == featureKey);
if (_feature == null) {
return Visibility(
visible: hideOnInactive ? false : true,
child: builder(context, false, child),
);
}
return ValueListenableBuilder<bool>(
valueListenable: _feature.isActive,
builder: (context, active, child) {
return Visibility(
visible: hideOnInactive ? active : true,
child: builder(context, active, child),
);
},
child: child,
);
}
}