This commit is contained in:
Hillel Coren 2019-10-30 14:34:51 +02:00
parent 1994bf9d06
commit 131e29964f
1 changed files with 23 additions and 21 deletions

View File

@ -1,5 +1,3 @@
import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:invoiceninja_flutter/data/models/serializers.dart'; import 'package:invoiceninja_flutter/data/models/serializers.dart';
@ -16,34 +14,38 @@ class _StateInspectorState extends State<StateInspector> {
String _filter = ''; String _filter = '';
dynamic filterJson(dynamic data, String filter) { dynamic filterJson(dynamic data, String filter) {
print('FILTER...');
if (filter.contains('.')) { if (filter.contains('.')) {
filter.split('.') final parts = filter.split('.')
..removeLast() ..removeLast()
..where((part) => part.isNotEmpty).forEach((part) { ..where((part) => part.isNotEmpty);
print('part: $part');
if (parts.isNotEmpty) {
parts.forEach((part) {
String pattern = '';
part.split('').forEach((ch) => pattern += ch.toLowerCase() + '.*');
final regExp = RegExp(pattern, caseSensitive: false);
String pattern = '.*';
part.split('').forEach((ch) => pattern += ch + '.*');
final regExp = RegExp(pattern, caseSensitive: true);
dynamic index;
try { try {
index = (data as Map) final dynamic index = (data as Map)
.keys .keys
.firstWhere((dynamic key) => regExp.hasMatch(key)); .firstWhere((dynamic key) => regExp.hasMatch(key));
} catch (e) {
if (index != null) {
data = data[index];
}
} catch (e){
// do nothing // do nothing
} }
print('index: $index');
if (index != null) {
data = data[index];
}
}); });
}
} }
return data; if (data.runtimeType.toString() ==
'_InternalLinkedHashMap<String, Object>') {
return data;
} else {
return <String, dynamic>{'value': data};
}
} }
@override @override
@ -60,14 +62,14 @@ class _StateInspectorState extends State<StateInspector> {
TextFormField( TextFormField(
autofocus: true, autofocus: true,
onChanged: (value) { onChanged: (value) {
print('changed: $value');
setState(() { setState(() {
_filter = value; _filter = value;
}); });
}, },
), ),
SizedBox(height: 20),
Container( Container(
color: Colors.white, //color: Colors.white,
child: SingleChildScrollView( child: SingleChildScrollView(
child: JsonViewerWidget(filterJson(data, _filter))), child: JsonViewerWidget(filterJson(data, _filter))),
), ),