-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathcommon_json_view_builder.dart
More file actions
44 lines (37 loc) · 1.14 KB
/
common_json_view_builder.dart
File metadata and controls
44 lines (37 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import 'package:flutter/material.dart';
import 'package:flutter_json_view/src/builders/primitive_builders/primitive_builders.dart';
import 'package:flutter_json_view/src/theme/json_view_theme.dart';
import 'builders.dart';
import 'primitive_builders/primitive_builder.dart';
class CommonJsonViewBuilder implements JsonViewBuilder {
CommonJsonViewBuilder(this.jsonObj, {required JsonViewTheme jsonViewTheme})
: _jsonViewTheme = jsonViewTheme;
final dynamic jsonObj;
final JsonViewTheme _jsonViewTheme;
@override
Widget build() {
return _renderJsonWidgets();
}
@override
JsonViewTheme get jsonViewTheme => _jsonViewTheme;
Widget _renderJsonWidgets() {
if (jsonObj is Map<String, dynamic>) {
return JsonMapBuilder(
jsonObj: jsonObj as Map<String, dynamic>,
jsonViewTheme: _jsonViewTheme,
);
} else if (jsonObj is List) {
return JsonListBuilder(
jsonObj: jsonObj as List,
jsonViewTheme: _jsonViewTheme,
);
} else if (jsonObj is Widget) {
return jsonObj;
}
;
return PrimitiveBuilder(
jsonObj,
jsonViewTheme: _jsonViewTheme,
);
}
}