Null safety

This commit is contained in:
Hillel Coren 2023-10-01 19:40:37 +03:00
parent a923482618
commit 09b90605c9
4 changed files with 35 additions and 40 deletions

View File

@ -890,6 +890,10 @@ Serializers _$serializers = (new Serializers().toBuilder()
const FullType(
BuiltMap, const [const FullType(String), const FullType(String)]),
() => new MapBuilder<String, String>())
..addBuilderFactory(
const FullType(
BuiltMap, const [const FullType(String), const FullType(String)]),
() => new MapBuilder<String, String>())
..addBuilderFactory(
const FullType(BuiltMap, const [
const FullType(String),
@ -1006,13 +1010,7 @@ Serializers _$serializers = (new Serializers().toBuilder()
const FullType(String),
const FullType(BuiltList, const [const FullType(String)])
]),
() => new MapBuilder<String, BuiltList<String>>())
..addBuilderFactory(
const FullType(BuiltMap, const [
const FullType.nullable(String),
const FullType.nullable(String)
]),
() => new MapBuilder<String?, String?>()))
() => new MapBuilder<String, BuiltList<String>>()))
.build();
// ignore_for_file: deprecated_member_use_from_same_package,type=lint

View File

@ -43,7 +43,7 @@ abstract class ReportsUIState
String get customEndDate;
BuiltMap<String?, String?> get filters;
BuiltMap<String, String> get filters;
bool get isGroupByFiltered =>
filters.containsKey(group) && filters[group]!.isNotEmpty;

View File

@ -43,10 +43,8 @@ class _$ReportsUIStateSerializer
specifiedType: const FullType(String)),
'filters',
serializers.serialize(object.filters,
specifiedType: const FullType(BuiltMap, const [
const FullType.nullable(String),
const FullType.nullable(String)
])),
specifiedType: const FullType(BuiltMap,
const [const FullType(String), const FullType(String)])),
];
return result;
@ -94,10 +92,8 @@ class _$ReportsUIStateSerializer
break;
case 'filters':
result.filters.replace(serializers.deserialize(value,
specifiedType: const FullType(BuiltMap, const [
const FullType.nullable(String),
const FullType.nullable(String)
]))!);
specifiedType: const FullType(BuiltMap,
const [const FullType(String), const FullType(String)]))!);
break;
}
}
@ -122,7 +118,7 @@ class _$ReportsUIState extends ReportsUIState {
@override
final String customEndDate;
@override
final BuiltMap<String?, String?> filters;
final BuiltMap<String, String> filters;
factory _$ReportsUIState([void Function(ReportsUIStateBuilder)? updates]) =>
(new ReportsUIStateBuilder()..update(updates))._build();
@ -241,11 +237,10 @@ class ReportsUIStateBuilder
set customEndDate(String? customEndDate) =>
_$this._customEndDate = customEndDate;
MapBuilder<String?, String?>? _filters;
MapBuilder<String?, String?> get filters =>
_$this._filters ??= new MapBuilder<String?, String?>();
set filters(MapBuilder<String?, String?>? filters) =>
_$this._filters = filters;
MapBuilder<String, String>? _filters;
MapBuilder<String, String> get filters =>
_$this._filters ??= new MapBuilder<String, String>();
set filters(MapBuilder<String, String>? filters) => _$this._filters = filters;
ReportsUIStateBuilder();

View File

@ -230,8 +230,10 @@ class ReportsScreen extends StatelessWidget {
filterColumns.first: ''
}
: {
value: (reportState.filters[value] ?? '').isNotEmpty
? reportState.filters[value]
value: reportState.filters.containsKey(value) &&
(reportState.filters[value] ?? '')
.isNotEmpty
? reportState.filters[value]!
: DateRange.thisQuarter.toString(),
if (filterColumns.isNotEmpty &&
filterColumns.first != value)
@ -552,9 +554,9 @@ class ReportDataTable extends StatefulWidget {
}
class _ReportDataTableState extends State<ReportDataTable> {
final Map<String, Map<String?, TextEditingController>>
final Map<String, Map<String, TextEditingController>>
_textEditingControllers = {};
final Map<String, Map<String?, FocusNode>> _textEditingFocusNodes = {};
final Map<String, Map<String, FocusNode>> _textEditingFocusNodes = {};
late ReportDataTableSource dataTableSource;
@override
@ -621,7 +623,7 @@ class _ReportDataTableState extends State<ReportDataTable> {
super.didChangeDependencies();
}
void _onChanged(String? column, String value) {
void _onChanged(String column, String value) {
widget.viewModel.onReportFiltersChanged(
context,
widget.viewModel.reportState.filters
@ -804,9 +806,9 @@ class ReportDataTableSource extends AppDataTableSource {
ReportsScreenVM viewModel;
final BuildContext context;
final Map<String, Map<String?, TextEditingController>> textEditingControllers;
final Map<String, Map<String?, FocusNode>> textEditingFocusNodes;
final Function(String?, String) onFilterChanged;
final Map<String, Map<String, TextEditingController>> textEditingControllers;
final Map<String, Map<String, FocusNode>> textEditingFocusNodes;
final Function(String, String) onFilterChanged;
@override
int get selectedRowCount => 0;
@ -1023,7 +1025,7 @@ class ReportResult {
return true;
}
List<String?> sortedColumns(ReportsUIState reportState) {
List<String> sortedColumns(ReportsUIState reportState) {
final data = columns.toList();
final group = reportState.group;
@ -1078,16 +1080,16 @@ class ReportResult {
DataRow tableFilters(
BuildContext context,
Map<String?, TextEditingController>? textEditingControllers,
Map<String?, FocusNode>? textEditingFocusNodes,
Function(String?, String) onFilterChanged) {
Map<String, TextEditingController>? textEditingControllers,
Map<String, FocusNode>? textEditingFocusNodes,
Function(String, String) onFilterChanged) {
final localization = AppLocalization.of(context);
final theme = Theme.of(context);
final store = StoreProvider.of<AppState>(context);
final reportState = store.state.uiState.reportsUIState;
return DataRow(cells: [
for (String? column in sortedColumns(reportState))
for (String column in sortedColumns(reportState))
if (textEditingControllers == null ||
!textEditingControllers.containsKey(column))
DataCell(Text(''))
@ -1214,7 +1216,7 @@ class ReportResult {
focusNode: textEditingFocusNodes![column],
optionsBuilder: (TextEditingValue textEditingValue) {
final filter = textEditingValue.text.toLowerCase();
final index = columns.indexOf(column!);
final index = columns.indexOf(column);
final options = data
.where((row) =>
row[index]
@ -1329,7 +1331,7 @@ class ReportResult {
final row = data[index - 1];
final cells = <DataCell>[];
for (var j = 0; j < row.length; j++) {
final index = columns.indexOf(sorted[j]!);
final index = columns.indexOf(sorted[j]);
final cell = row[index];
final column = sorted[j];
cells.add(
@ -1372,7 +1374,7 @@ class ReportResult {
} else if (columnType == ReportColumnType.number) {
final currencyId = values!['${column}_currency_id'];
value = formatNumber(values[column], context,
formatNumberType: column!.toLowerCase().contains('quantity')
formatNumberType: column.toLowerCase().contains('quantity')
? FormatNumberType.double
: FormatNumberType.money,
currencyId:
@ -1386,8 +1388,8 @@ class ReportResult {
return;
}
if (column == groupBy) {
String? filter = group;
String? customStartDate = '';
String filter = group;
String customStartDate = '';
String customEndDate = '';
if (getReportColumnType(column, context) ==
ReportColumnType.dateTime ||