Skip to content

Commit c80f56e

Browse files
authored
Bump version to 3.0.5 and update dependencies; fix various issues in feature management and presentation (#9)
1 parent 44db8d0 commit c80f56e

File tree

12 files changed

+30
-50
lines changed

12 files changed

+30
-50
lines changed

example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
ignoresPersistentStateOnLaunch = "NO"
5151
debugDocumentVersioning = "YES"
5252
debugServiceExtension = "internal"
53+
enableGPUValidationMode = "1"
5354
allowLocationSimulation = "YES">
5455
<BuildableProductRunnable
5556
runnableDebuggingMode = "0">

example/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ dependencies:
1313
flutter:
1414
sdk: flutter
1515

16-
feature_manager: ^3.0.4
16+
feature_manager: ^3.0.5
1717

1818
provider: ^6.1.2
19-
shared_preferences: ^2.3.3
19+
shared_preferences: ^2.3.5
2020

2121
dev_dependencies:
2222
build_runner:
2323
flutter_test:
2424
sdk: flutter
25-
feature_manager_generator: ^3.0.4
25+
feature_manager_generator: ^3.0.5
2626

2727
# The following section is specific to Flutter.
2828
flutter:

feature_manager/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 3.0.5
2+
3+
- Fixed an issue where the Developer Preferences screen did not update after a value change.
4+
- Resolved an issue causing the `TextFeature` to appear under the `JsonFeature` flow.
5+
- Fixed a saving issue in the `JsonFeature`.
6+
17
## 3.0.4
28

39
### Breaking Changes 🔥

feature_manager/lib/src/cubit/features_cubit.dart

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,17 @@ class FeaturesCubit extends Cubit<FeaturesState> {
1313
final FeatureRepository repository;
1414
StreamSubscription<List<Feature<dynamic>>>? _featuresSubscription;
1515

16-
Future<void> getFeatures() async {
16+
void getFeatures() {
1717
try {
1818
emit(FeaturesLoading());
1919

20-
final features = await repository.getFeatures();
20+
final features = repository.getFeatures();
2121

2222
if (features.isNotEmpty) {
2323
emit(FeaturesSuccess(features));
2424
} else {
2525
emit(FeaturesEmpty());
2626
}
27-
28-
_listenFeatures();
2927
} catch (e) {
3028
if (kDebugMode) {
3129
print('FeatureManager error >> $e');
@@ -40,6 +38,7 @@ class FeaturesCubit extends Cubit<FeaturesState> {
4038
) async {
4139
try {
4240
await repository.putValue(feature, value);
41+
getFeatures();
4342
} catch (e) {
4443
if (kDebugMode) {
4544
print('FeatureManager error >> $e');
@@ -48,24 +47,6 @@ class FeaturesCubit extends Cubit<FeaturesState> {
4847
}
4948
}
5049

51-
void _listenFeatures() {
52-
_featuresSubscription ??= repository.getFeaturesStream().distinct().listen(
53-
(features) {
54-
if (features.isNotEmpty) {
55-
emit(FeaturesSuccess(features));
56-
} else {
57-
emit(FeaturesEmpty());
58-
}
59-
},
60-
onError: (dynamic e) {
61-
if (kDebugMode) {
62-
print('FeatureManager error >> $e');
63-
}
64-
emit(FeaturesError());
65-
},
66-
);
67-
}
68-
6950
@override
7051
Future<void> close() {
7152
_featuresSubscription?.cancel();

feature_manager/lib/src/data/feature_repository.dart

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,22 @@ import 'package:shared_preferences/shared_preferences.dart';
77

88
class FeatureRepository {
99
FeatureRepository({
10-
required this.featuresList,
10+
required List<Feature<dynamic>> featuresList,
1111
required SharedPreferences sharedPreferences,
12-
}) : _sharedPreferences = sharedPreferences {
13-
_featuresStreamController = StreamController<List<Feature<dynamic>>>.broadcast();
14-
}
12+
}) : _featuresList = featuresList,
13+
_sharedPreferences = sharedPreferences;
1514

16-
final List<Feature<dynamic>> featuresList;
15+
final List<Feature<dynamic>> _featuresList;
1716
final SharedPreferences _sharedPreferences;
1817

19-
late StreamController<List<Feature<dynamic>>> _featuresStreamController;
20-
21-
Stream<List<Feature<dynamic>>> getFeaturesStream() => _featuresStreamController.stream;
22-
23-
Future<List<Feature<dynamic>>> getFeatures() async {
24-
_featuresStreamController.add(featuresList);
25-
return featuresList;
26-
}
18+
List<Feature<dynamic>> getFeatures() => _featuresList;
2719

2820
Future<void> putValue(
2921
Feature<dynamic> feature,
3022
Object? value,
3123
) async {
3224
if (value == null) {
3325
await _sharedPreferences.remove(feature.key);
34-
await getFeatures();
3526
return;
3627
}
3728
if (feature.isText && value is String) {
@@ -47,6 +38,5 @@ class FeatureRepository {
4738
} else {
4839
throw Exception('Invalid value type');
4940
}
50-
await getFeatures();
5141
}
5242
}

feature_manager/lib/src/presentation/feature_item.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class _FeatureItemState extends State<_FeatureItem> {
145145
} else if (item.isInteger) {
146146
widget.onChanged(text.isEmpty ? 0 : int.tryParse(text));
147147
} else if (item.isJson) {
148-
widget.onChanged(text.isEmpty ? null : jsonEncode(text));
148+
widget.onChanged(text.isEmpty ? null : jsonDecode(text));
149149
} else {
150150
widget.onChanged(text);
151151
}

feature_manager/lib/src/presentation/features_screen.dart

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class _DeveloperPreferencesScreenState extends State<DeveloperPreferencesScreen>
6767
} else if (featuresState is FeaturesError) {
6868
return const _Error();
6969
}
70-
return Container();
70+
return const SizedBox.shrink();
7171
},
7272
),
7373
);
@@ -87,9 +87,7 @@ class _Success extends StatelessWidget {
8787
final preference = preferences[index];
8888
return _FeatureItem(
8989
preference,
90-
onChanged: (newValue) {
91-
cubit.changeFeature(preference, newValue);
92-
},
90+
onChanged: (newValue) => cubit.changeFeature(preference, newValue),
9391
);
9492
},
9593
itemCount: preferences.length,

feature_manager/lib/src/utils/extensions.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@ extension FeatureBooleanExt<T> on Feature<T> {
3737
bool get isInteger => this is Feature<int>;
3838

3939
/// Returns true if this Json Feature
40-
bool get isJson => this is Feature<Object>;
40+
bool get isJson => this is Feature<Map<String, dynamic>>;
4141
}

feature_manager/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: Feature manager for developer preferences and experiments
33
repository: https://github.com/theRealGetman/feature-manager/tree/master/feature_manager
44
issue_tracker: https://github.com/theRealGetman/feature-manager/issues
55

6-
version: 3.0.4
6+
version: 3.0.5
77

88
environment:
99
sdk: ">=3.2.4 <4.0.0"

feature_manager/test/data/feature_repository_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void main() {
122122
);
123123

124124
// when
125-
final features = await target.getFeatures();
125+
final features = target.getFeatures();
126126

127127
// then
128128
expect(features[0].value, true);

generator/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 3.0.5
2+
3+
- Update a dependency to the latest release
4+
15
## 3.0.4
26

37
### Refactored Feature Type Handling:

generator/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: Feature manager generator for developer preferences and experiments
33
repository: https://github.com/theRealGetman/feature-manager/tree/master/generator
44
issue_tracker: https://github.com/theRealGetman/feature-manager/issues
55

6-
version: 3.0.4
6+
version: 3.0.5
77

88
environment:
99
sdk: ">=3.2.4 <4.0.0"
@@ -12,7 +12,7 @@ dependencies:
1212
analyzer: ^6.7.0
1313
build: ^2.4.1
1414
source_gen: ^1.5.0
15-
feature_manager: ^3.0.4
15+
feature_manager: ^3.0.5
1616

1717
dev_dependencies:
1818
lints: ^5.1.1

0 commit comments

Comments
 (0)