Flutter upgrade
This commit is contained in:
parent
d05e98d15f
commit
12855222d0
16
.metadata
16
.metadata
|
|
@ -1,11 +1,11 @@
|
|||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled.
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: c07f7888888435fd9df505aa2efc38d3cf65681b
|
||||
channel: stable
|
||||
revision: "ead455963c12b453cdb2358cad34969c76daf180"
|
||||
channel: "stable"
|
||||
|
||||
project_type: app
|
||||
|
||||
|
|
@ -13,11 +13,11 @@ project_type: app
|
|||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
|
||||
base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
|
||||
- platform: linux
|
||||
create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
|
||||
base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
|
||||
create_revision: ead455963c12b453cdb2358cad34969c76daf180
|
||||
base_revision: ead455963c12b453cdb2358cad34969c76daf180
|
||||
- platform: windows
|
||||
create_revision: ead455963c12b453cdb2358cad34969c76daf180
|
||||
base_revision: ead455963c12b453cdb2358cad34969c76daf180
|
||||
|
||||
# User provided section
|
||||
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@
|
|||
# in sync with this file.
|
||||
|
||||
analyzer:
|
||||
strong-mode:
|
||||
implicit-dynamic: false
|
||||
errors:
|
||||
# https://github.com/flutter/flutter/issues/41563#issuecomment-686481533
|
||||
undefined_prefixed_name: ignore
|
||||
|
|
@ -51,7 +49,7 @@ linter:
|
|||
- always_declare_return_types
|
||||
- always_put_control_body_on_new_line
|
||||
# - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
|
||||
- always_require_non_null_named_parameters
|
||||
# - always_require_non_null_named_parameters # deprecated
|
||||
# - always_specify_types # not support by built_value
|
||||
- annotate_overrides
|
||||
# - avoid_annotating_with_dynamic # conflicts with always_specify_types
|
||||
|
|
@ -92,11 +90,11 @@ linter:
|
|||
# hash_and_equals # For built_value memoized hash
|
||||
- implementation_imports
|
||||
# - invariant_booleans # https://github.com/flutter/flutter/issues/5790
|
||||
- iterable_contains_unrelated_type
|
||||
# - iterable_contains_unrelated_type # deprecated
|
||||
# - join_return_with_assignment # not yet tested
|
||||
- library_names
|
||||
- library_prefixes
|
||||
- list_remove_unrelated_type
|
||||
# - list_remove_unrelated_type # deprecated
|
||||
# - literal_only_boolean_expressions # https://github.com/flutter/flutter/issues/5791
|
||||
- no_adjacent_strings_in_list
|
||||
- no_duplicate_case_values
|
||||
|
|
|
|||
|
|
@ -315,7 +315,7 @@ class UserPermission extends EnumClass {
|
|||
static UserPermission valueOf(String name) => _$permissionValueOf(name);
|
||||
}
|
||||
|
||||
abstract class EntityStatus {
|
||||
abstract mixin class EntityStatus {
|
||||
String get id;
|
||||
|
||||
String get name;
|
||||
|
|
@ -352,7 +352,7 @@ class EntityStats {
|
|||
}
|
||||
}
|
||||
|
||||
abstract class SelectableEntity {
|
||||
abstract mixin class SelectableEntity {
|
||||
String get id;
|
||||
|
||||
bool matchesFilter(String? filter) => true;
|
||||
|
|
@ -376,7 +376,7 @@ class EntityFields {
|
|||
static const String isDeleted = 'is_deleted';
|
||||
}
|
||||
|
||||
abstract class BaseEntity implements SelectableEntity {
|
||||
abstract mixin class BaseEntity implements SelectableEntity {
|
||||
static int counter = 0;
|
||||
|
||||
static String get nextId => '${--counter}';
|
||||
|
|
@ -534,7 +534,7 @@ abstract class BaseEntity implements SelectableEntity {
|
|||
}
|
||||
}
|
||||
|
||||
abstract class HasActivities {
|
||||
abstract mixin class HasActivities {
|
||||
BuiltList<ActivityEntity> get activities;
|
||||
|
||||
Iterable<ActivityEntity> getActivities({String? invoiceId, String? typeId}) {
|
||||
|
|
@ -550,11 +550,11 @@ abstract class HasActivities {
|
|||
}
|
||||
}
|
||||
|
||||
abstract class BelongsToClient {
|
||||
abstract mixin class BelongsToClient {
|
||||
String? get clientId;
|
||||
}
|
||||
|
||||
abstract class BelongsToVendor {
|
||||
abstract mixin class BelongsToVendor {
|
||||
String get vendorId;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import 'package:built_collection/built_collection.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/invoice_model.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
|
||||
abstract class CalculateInvoiceTotal {
|
||||
abstract mixin class CalculateInvoiceTotal {
|
||||
bool get isAmountDiscount;
|
||||
|
||||
String get taxName1;
|
||||
|
|
|
|||
|
|
@ -520,13 +520,13 @@ abstract class TaskEntity extends Object
|
|||
if (taskItem[0] == false || taskItem[0] == null) {
|
||||
startDate = 0;
|
||||
} else {
|
||||
startDate = (taskItem[0]).round();
|
||||
startDate = taskItem[0].round();
|
||||
}
|
||||
|
||||
if (taskItem[1] == false || taskItem[1] == null) {
|
||||
endDate = 0;
|
||||
} else {
|
||||
endDate = (taskItem[1]).round();
|
||||
endDate = taskItem[1].round();
|
||||
}
|
||||
|
||||
final taskTime = TaskTime(
|
||||
|
|
|
|||
|
|
@ -193,10 +193,12 @@ void main({bool isTesting = false}) async {
|
|||
|
||||
event = event.copyWith(
|
||||
environment: '${store.state.environment}'.split('.').last,
|
||||
/*
|
||||
extra: <String, dynamic>{
|
||||
'server_version': account.currentVersion,
|
||||
'route': state.uiState.currentRoute,
|
||||
},
|
||||
*/
|
||||
);
|
||||
|
||||
return event;
|
||||
|
|
|
|||
|
|
@ -172,14 +172,6 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
void initState() {
|
||||
super.initState();
|
||||
|
||||
final window = WidgetsBinding.instance.window;
|
||||
window.onPlatformBrightnessChanged = () {
|
||||
WidgetsBinding.instance.handlePlatformBrightnessChanged();
|
||||
widget.store!.dispatch(UpdateUserPreferences(
|
||||
enableDarkModeSystem: window.platformBrightness == Brightness.dark));
|
||||
setState(() {});
|
||||
};
|
||||
|
||||
if (kIsWeb) {
|
||||
WebUtils.warnChanges(widget.store);
|
||||
}
|
||||
|
|
@ -235,6 +227,11 @@ class InvoiceNinjaAppState extends State<InvoiceNinjaApp> {
|
|||
if (state.prefState.requireAuthentication && !_authenticated) {
|
||||
_authenticate();
|
||||
}
|
||||
|
||||
final brightness = MediaQuery.of(context).platformBrightness;
|
||||
widget.store!.dispatch(UpdateUserPreferences(
|
||||
enableDarkModeSystem: brightness == Brightness.dark));
|
||||
|
||||
super.didChangeDependencies();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -262,7 +262,7 @@ Middleware<AppState> _createRefreshRequest(AuthRepository repository) {
|
|||
|
||||
String token;
|
||||
bool hasToken = false;
|
||||
if ((state.userCompany.token.token).isNotEmpty) {
|
||||
if (state.userCompany.token.token.isNotEmpty) {
|
||||
token = state.userCompany.token.token;
|
||||
hasToken = true;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ List<String?> taskList(
|
|||
final list = taskMap.keys.where((taskId) {
|
||||
final task = taskMap[taskId];
|
||||
if ((clientId ?? '').isNotEmpty &&
|
||||
(task!.clientId).isNotEmpty &&
|
||||
task!.clientId.isNotEmpty &&
|
||||
task.clientId != clientId) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import 'package:built_value/built_value.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
|
||||
|
||||
abstract class EntityUIState {
|
||||
abstract mixin class EntityUIState {
|
||||
bool get isCreatingNew;
|
||||
|
||||
String get editingId;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
// Dart imports:
|
||||
import 'dart:convert';
|
||||
|
||||
// Flutter imports:
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
|
@ -59,12 +58,17 @@ class _MobileWebViewState extends State<_MobileWebView>
|
|||
super.didUpdateWidget(oldWidget);
|
||||
|
||||
if (widget.html != oldWidget.html) {
|
||||
_webViewController.loadHtmlString(widget.html!);
|
||||
|
||||
/*
|
||||
_webViewController.loadUrl(Uri.dataFromString(widget.html!,
|
||||
mimeType: 'text/html', encoding: Encoding.getByName('utf-8'))
|
||||
.toString());
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
super.build(context);
|
||||
|
|
@ -79,4 +83,5 @@ class _MobileWebViewState extends State<_MobileWebView>
|
|||
javascriptMode: JavascriptMode.disabled,
|
||||
);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,8 +33,10 @@ class CopyToClipboard extends StatelessWidget {
|
|||
)
|
||||
: child;
|
||||
final localization = AppLocalization.of(context);
|
||||
final onTap = () {
|
||||
Clipboard.setData(ClipboardData(text: value));
|
||||
final onTap = value == null
|
||||
? null
|
||||
: () {
|
||||
Clipboard.setData(ClipboardData(text: value!));
|
||||
|
||||
var valueStr = value!.replaceAll('\n', ' ');
|
||||
if (value!.length > 20) {
|
||||
|
|
|
|||
|
|
@ -440,7 +440,7 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView>
|
|||
return EditScaffold(
|
||||
entity: invoice,
|
||||
title: localization!.sendEmail,
|
||||
onCancelPressed: (context) => viewEntity(entity: invoice!),
|
||||
onCancelPressed: (context) => viewEntity(entity: invoice),
|
||||
saveLabel: localization.send,
|
||||
onSavePressed: (context) {
|
||||
if (state!.account.accountSmsVerified || state.isSelfHosted) {
|
||||
|
|
@ -522,7 +522,7 @@ class _InvoiceEmailViewState extends State<InvoiceEmailView>
|
|||
child: EditScaffold(
|
||||
entity: invoice,
|
||||
title: localization!.sendEmail,
|
||||
onCancelPressed: (context) => viewEntity(entity: invoice!),
|
||||
onCancelPressed: (context) => viewEntity(entity: invoice),
|
||||
appBarBottom: TabBar(
|
||||
controller: _controller,
|
||||
isScrollable: true,
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class AppListTile extends StatelessWidget {
|
|||
return;
|
||||
}
|
||||
|
||||
Clipboard.setData(ClipboardData(text: copyValue ?? title));
|
||||
Clipboard.setData(ClipboardData(text: copyValue ?? title ?? ''));
|
||||
showToast(AppLocalization.of(context)!
|
||||
.copiedToClipboard
|
||||
.replaceFirst(':value', copyValue ?? title!));
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ class _MenuDrawerState extends State<MenuDrawer> {
|
|||
items: [
|
||||
...state.companies
|
||||
.map((CompanyEntity company) => DropdownMenuItem<String>(
|
||||
value: (state.companies.indexOf(company)).toString(),
|
||||
value: state.companies.indexOf(company).toString(),
|
||||
child: _companyListItem(company)))
|
||||
.toList(),
|
||||
if (state.canAddCompany)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
/*
|
||||
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
|
@ -1003,3 +1004,5 @@ class _NullWidget extends Widget {
|
|||
@override
|
||||
Element createElement() => throw UnimplementedError();
|
||||
}
|
||||
|
||||
*/
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
/*
|
||||
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
|
@ -63,3 +64,4 @@ abstract class AppDataTableSource extends ChangeNotifier {
|
|||
/// If the selected row count changes, call [notifyListeners].
|
||||
int get selectedRowCount;
|
||||
}
|
||||
*/
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
/*
|
||||
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
|
@ -518,3 +519,4 @@ class AppPaginatedDataTableState extends State<AppPaginatedDataTable> {
|
|||
);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
// Flutter imports:
|
||||
import 'package:flutter/material.dart' hide DataRow, DataCell, DataColumn;
|
||||
|
||||
// Package imports:
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
|
||||
|
|
@ -14,13 +14,11 @@ import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
|||
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/actions_menu_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_data_table.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_data_table_source.dart';
|
||||
import 'package:invoiceninja_flutter/utils/colors.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
|
||||
class EntityDataTableSource extends AppDataTableSource {
|
||||
class EntityDataTableSource extends DataTableSource {
|
||||
EntityDataTableSource(
|
||||
{required this.context,
|
||||
required this.editingId,
|
||||
|
|
@ -129,7 +127,7 @@ class EntityDataTableSource extends AppDataTableSource {
|
|||
],
|
||||
),
|
||||
onTap: () => onTap(entity),
|
||||
backgroundColor: backgroundColor,
|
||||
//backgroundColor: backgroundColor,
|
||||
),
|
||||
...tableColumns!.map(
|
||||
(field) => DataCell(
|
||||
|
|
@ -146,7 +144,7 @@ class EntityDataTableSource extends AppDataTableSource {
|
|||
),
|
||||
onTap: () => onTap(entity),
|
||||
//onLongPress: () => selectEntity(entity: entity, context: context, longPress: true),
|
||||
backgroundColor: backgroundColor,
|
||||
//backgroundColor: backgroundColor,
|
||||
),
|
||||
)
|
||||
],
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import 'dart:math';
|
|||
// Flutter imports:
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:collection/collection.dart' show IterableNullableExtension;
|
||||
import 'package:flutter/material.dart' hide DataRow, DataCell, DataColumn;
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
|
|
@ -26,8 +26,6 @@ import 'package:invoiceninja_flutter/ui/app/lists/list_filter.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/loading_indicator.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_data_table.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_paginated_data_table.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/entity_datatable.dart';
|
||||
import 'package:invoiceninja_flutter/utils/icons.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -247,8 +245,8 @@ class _EntityListState extends State<EntityList> {
|
|||
primary: true,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 16),
|
||||
child: AppPaginatedDataTable(
|
||||
hasActionsColumn: true,
|
||||
child: PaginatedDataTable(
|
||||
//hasActionsColumn: true,
|
||||
onSelectAll: (value) {
|
||||
final startIndex =
|
||||
min(_firstRowIndex, entityList.length - 1);
|
||||
|
|
@ -294,11 +292,9 @@ class _EntityListState extends State<EntityList> {
|
|||
sortAscending: listUIState.sortAscending,
|
||||
rowsPerPage: state.prefState.rowsPerPage,
|
||||
onPageChanged: (row) {
|
||||
if (row != null) {
|
||||
_firstRowIndex = row;
|
||||
store.dispatch(UpdateLastHistory(
|
||||
(row / state.prefState.rowsPerPage).floor()));
|
||||
}
|
||||
},
|
||||
initialFirstRowIndex: _firstRowIndex,
|
||||
availableRowsPerPage: [
|
||||
|
|
@ -469,7 +465,7 @@ class _EntityListState extends State<EntityList> {
|
|||
multiselect: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(
|
||||
((_) => widget.onClearMultiselect())),
|
||||
(_) => widget.onClearMultiselect()),
|
||||
);
|
||||
},
|
||||
onCancelPressed: (_) => widget.onClearMultiselect(),
|
||||
|
|
|
|||
|
|
@ -73,8 +73,8 @@ class CompanyGatewayScreen extends StatelessWidget {
|
|||
entities: companyGateways,
|
||||
multiselect: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(((_) =>
|
||||
store.dispatch(ClearCompanyGatewayMultiselect()))),
|
||||
..future.then<Null>((_) =>
|
||||
store.dispatch(ClearCompanyGatewayMultiselect())),
|
||||
);
|
||||
},
|
||||
onCancelPressed: (context) =>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
// Flutter imports:
|
||||
|
||||
import 'package:collection/collection.dart' show IterableNullableExtension;
|
||||
import 'package:flutter/material.dart' hide DataRow, DataCell, DataColumn;
|
||||
import 'package:flutter/material.dart' as mt;
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
|
|
@ -33,9 +33,6 @@ import 'package:invoiceninja_flutter/ui/app/history_drawer_vm.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/menu_drawer_vm.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/presenters/entity_presenter.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_data_table.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_data_table_source.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/tables/app_paginated_data_table.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/upgrade_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/reports/report_charts.dart';
|
||||
import 'package:invoiceninja_flutter/ui/reports/reports_screen_vm.dart';
|
||||
|
|
@ -160,7 +157,8 @@ class ReportsScreen extends StatelessWidget {
|
|||
final columnTitle = state.company.getCustomFieldLabel(column);
|
||||
return DropdownMenuItem(
|
||||
child: Text(columnTitle.isEmpty
|
||||
? localization.lookup(column): columnTitle),
|
||||
? localization.lookup(column)
|
||||
: columnTitle),
|
||||
value: column,
|
||||
);
|
||||
}).toList(),
|
||||
|
|
@ -590,7 +588,7 @@ class _ReportDataTableState extends State<ReportDataTable> {
|
|||
*/
|
||||
|
||||
// ignore: invalid_use_of_visible_for_testing_member, invalid_use_of_protected_member
|
||||
dataTableSource.notifyListeners();
|
||||
//dataTableSource.notifyListeners();
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
@ -685,9 +683,9 @@ class _ReportDataTableState extends State<ReportDataTable> {
|
|||
),
|
||||
SingleChildScrollView(
|
||||
padding: const EdgeInsets.all(12),
|
||||
child: AppPaginatedDataTable(
|
||||
child: PaginatedDataTable(
|
||||
//showFirstLastButtons: true,
|
||||
subtractOneFromCount: true,
|
||||
//subtractOneFromCount: true,
|
||||
header: SizedBox(),
|
||||
sortColumnIndex: sortedColumns.contains(reportSettings.sortColumn)
|
||||
? sortedColumns.indexOf(reportSettings.sortColumn)
|
||||
|
|
@ -794,7 +792,7 @@ ReportColumnType getReportColumnType(String? column, BuildContext context) {
|
|||
}
|
||||
}
|
||||
|
||||
class ReportDataTableSource extends AppDataTableSource {
|
||||
class ReportDataTableSource extends DataTableSource {
|
||||
ReportDataTableSource({
|
||||
required this.context,
|
||||
required this.textEditingControllers,
|
||||
|
|
@ -1124,7 +1122,7 @@ class ReportResult {
|
|||
))
|
||||
else if (getReportColumnType(column, context) == ReportColumnType.age)
|
||||
DataCell(AppDropdownButton<String>(
|
||||
value: (textEditingControllers[column]!.text).isNotEmpty &&
|
||||
value: textEditingControllers[column]!.text.isNotEmpty &&
|
||||
textEditingControllers[column]!.text != 'null'
|
||||
? textEditingControllers[column]!.text
|
||||
: null,
|
||||
|
|
@ -1464,7 +1462,8 @@ class ReportResult {
|
|||
mt.DataColumn(
|
||||
label: Text(
|
||||
company.getCustomFieldLabel(column!).isEmpty
|
||||
? localization.lookup(column): company.getCustomFieldLabel(column),
|
||||
? localization.lookup(column)
|
||||
: company.getCustomFieldLabel(column),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
numeric: true,
|
||||
|
|
|
|||
|
|
@ -6,9 +6,7 @@ import 'package:flutter/services.dart';
|
|||
// Package imports:
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
import 'package:timeago/timeago.dart' as timeago;
|
||||
|
||||
// Project imports:
|
||||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
|
|
@ -22,11 +20,9 @@ import 'package:invoiceninja_flutter/ui/app/forms/app_dropdown_button.dart';
|
|||
import 'package:invoiceninja_flutter/ui/app/forms/app_form.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/bool_dropdown_button.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/forms/color_picker.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/live_text.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
|
||||
import 'package:invoiceninja_flutter/ui/settings/device_settings_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/dialogs.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||
|
|
@ -320,6 +316,7 @@ class _DeviceSettingsState extends State<DeviceSettings>
|
|||
return ListTile(
|
||||
leading: Icon(Icons.refresh),
|
||||
title: Text(localization.refreshData),
|
||||
/*
|
||||
subtitle: LiveText(() {
|
||||
if (state.userCompanyState.lastUpdated == 0) {
|
||||
return '';
|
||||
|
|
@ -336,6 +333,7 @@ class _DeviceSettingsState extends State<DeviceSettings>
|
|||
onTap: () {
|
||||
viewModel.onRefreshTap(context);
|
||||
},
|
||||
*/
|
||||
);
|
||||
}),
|
||||
ListTile(
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ class TaskStatusScreen extends StatelessWidget {
|
|||
multiselect: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(
|
||||
((_) => store.dispatch(ClearTaskStatusMultiselect()))),
|
||||
(_) => store.dispatch(ClearTaskStatusMultiselect())),
|
||||
);
|
||||
},
|
||||
label: localization!.actions,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <desktop_drop/desktop_drop_plugin.h>
|
||||
#include <file_selector_linux/file_selector_plugin.h>
|
||||
#include <printing/printing_plugin.h>
|
||||
#include <screen_retriever/screen_retriever_plugin.h>
|
||||
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||
|
|
@ -18,6 +19,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
|||
g_autoptr(FlPluginRegistrar) desktop_drop_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopDropPlugin");
|
||||
desktop_drop_plugin_register_with_registrar(desktop_drop_registrar);
|
||||
g_autoptr(FlPluginRegistrar) file_selector_linux_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin");
|
||||
file_selector_plugin_register_with_registrar(file_selector_linux_registrar);
|
||||
g_autoptr(FlPluginRegistrar) printing_registrar =
|
||||
fl_plugin_registry_get_registrar_for_plugin(registry, "PrintingPlugin");
|
||||
printing_plugin_register_with_registrar(printing_registrar);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
desktop_drop
|
||||
file_selector_linux
|
||||
printing
|
||||
screen_retriever
|
||||
sentry_flutter
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import FlutterMacOS
|
|||
import Foundation
|
||||
|
||||
import desktop_drop
|
||||
import file_selector_macos
|
||||
import in_app_purchase_storekit
|
||||
import in_app_review
|
||||
import package_info
|
||||
|
|
@ -25,6 +26,7 @@ import window_manager
|
|||
|
||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin"))
|
||||
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
||||
InAppPurchasePlugin.register(with: registry.registrar(forPlugin: "InAppPurchasePlugin"))
|
||||
InAppReviewPlugin.register(with: registry.registrar(forPlugin: "InAppReviewPlugin"))
|
||||
FLTPackageInfoPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlugin"))
|
||||
|
|
|
|||
333
pubspec.lock
333
pubspec.lock
|
|
@ -37,10 +37,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.0"
|
||||
version: "2.11.0"
|
||||
attributed_text:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -68,11 +68,12 @@ packages:
|
|||
boardview:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: boardview
|
||||
sha256: a3319f868baf036b6c217dc4f35c152c4432207552433d94841aa8d3059c6170
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.2"
|
||||
path: "."
|
||||
ref: HEAD
|
||||
resolved-ref: "80cd60f55db250ea2c86ed5762e4c55337422efe"
|
||||
url: "https://github.com/BenPoell/FlutterBoardView.git"
|
||||
source: git
|
||||
version: "0.2.3"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -165,10 +166,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.3.0"
|
||||
charcode:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -229,10 +230,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: collection
|
||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
||||
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.17.2"
|
||||
console:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -349,10 +350,42 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: d090ae03df98b0247b82e5928f44d1b959867049d18d73635e2e0bc3f49542b9
|
||||
sha256: "9d6e95ec73abbd31ec54d0e0df8a961017e165aba1395e462e5b31ea0c165daf"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.2.5"
|
||||
version: "5.3.1"
|
||||
file_selector_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_linux
|
||||
sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.2+1"
|
||||
file_selector_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_macos
|
||||
sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.3+3"
|
||||
file_selector_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_platform_interface
|
||||
sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.1"
|
||||
file_selector_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_windows
|
||||
sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.3+1"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -378,10 +411,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_cache_manager
|
||||
sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3"
|
||||
sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.0"
|
||||
version: "3.3.1"
|
||||
flutter_colorpicker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -412,10 +445,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "4bef634684b2c7f3468c77c766c831229af829a0cd2d4ee6c1b99558bd14e5d2"
|
||||
sha256: f185ac890306b5779ecbd611f52502d8d4d63d27703ef73161ca0407e815f02c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.8"
|
||||
version: "2.0.16"
|
||||
flutter_redux:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -428,18 +461,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_slidable
|
||||
sha256: "6c68e1fad129b4b807b2218ef4cf7f7f6f61c5ec8861c990dc2278d9d03cb09f"
|
||||
sha256: cc4231579e3eae41ae166660df717f4bad1359c87f4a4322ad8ba1befeb3d2be
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "3.0.0"
|
||||
flutter_staggered_grid_view:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_staggered_grid_view
|
||||
sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07"
|
||||
sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.2"
|
||||
version: "0.7.0"
|
||||
flutter_styled_toast:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -503,14 +536,22 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
google_identity_services_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: google_identity_services_web
|
||||
sha256: "554748f2478619076128152c58905620d10f9c7fc270ff1d3a9675f9f53838ed"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
google_sign_in:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: google_sign_in
|
||||
sha256: "821f354c053d51a2d417b02d42532a19a6ea8057d2f9ebb8863c07d81c98aaf9"
|
||||
sha256: f45038d27bcad37498f282295ae97eece23c9349fc16649154067b87b9f1fd03
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.4.4"
|
||||
version: "6.1.5"
|
||||
google_sign_in_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -531,18 +572,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: google_sign_in_platform_interface
|
||||
sha256: fece762f0d2dd762ebde43ad70662a209ff6ee034111976549c392f7763d9264
|
||||
sha256: "35ceee5f0eadc1c07b0b4af7553246e315c901facbb7d3dadf734ba2693ceec4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.1"
|
||||
version: "2.4.2"
|
||||
google_sign_in_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: google_sign_in_web
|
||||
sha256: "75cc41ebc53b1756320ee14d9c3018ad3e6cea298147dbcd86e9d0c8d6720b40"
|
||||
sha256: "939e9172a378ec4eaeb7f71eeddac9b55ebd0e8546d336daec476a68e5279766"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.10.2+1"
|
||||
version: "0.12.0+5"
|
||||
graphs:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -603,66 +644,90 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: image_cropper
|
||||
sha256: "85324928ee8a8be35a529446435ca53067865b9353c8681983472eeec66d780f"
|
||||
sha256: "542c3453109d16bcc388e43ae2276044d2cd6a6d20c68bdcff2c94ab9363ea15"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "4.0.1"
|
||||
image_cropper_for_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_cropper_for_web
|
||||
sha256: "09e93a8ec0435adcaa23622ac090442872f18145d70b9ff605ffedcf97d56255"
|
||||
sha256: "89c936aa772a35b69ca67b78049ae9fa163a4fb8da2f6dee3893db8883fb49d2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.3"
|
||||
version: "2.0.0"
|
||||
image_cropper_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_cropper_platform_interface
|
||||
sha256: "62349e3aab63873ea9b9ab9f69d036ab8a0d74b3004beec4303981386cb9273f"
|
||||
sha256: b232175c132b2f7ede3e1f101652bcd635cb4079a77c6dded8e6d32e6578d685
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
version: "4.0.0"
|
||||
image_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: image_picker
|
||||
sha256: "22207768556b82d55ec70166824350fee32298732d5efa4d6e756f848f51f66a"
|
||||
sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.6+3"
|
||||
version: "1.0.4"
|
||||
image_picker_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_android
|
||||
sha256: "68d067baf7f6e401b1124ee83dd6967e67847314250fd68012aab34a69beb344"
|
||||
sha256: "0c7b83bbe2980c8a8e36e974f055e11e51675784e13a4762889feed0f3937ff2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.5+7"
|
||||
version: "0.8.8+1"
|
||||
image_picker_for_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_for_web
|
||||
sha256: "66fc6e3877bbde82c33d122f3588777c3784ac5bd7d1cdd79213ef7aecb85b34"
|
||||
sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.11"
|
||||
version: "3.0.1"
|
||||
image_picker_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_ios
|
||||
sha256: "39aa70b5f1e5e7c94585b9738632d5fdb764a5655e40cd9e7b95fbd2fc50c519"
|
||||
sha256: c5538cacefacac733c724be7484377923b476216ad1ead35a0d2eadcdc0fc497
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.6+9"
|
||||
version: "0.8.8+2"
|
||||
image_picker_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_linux
|
||||
sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
image_picker_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_macos
|
||||
sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
image_picker_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_platform_interface
|
||||
sha256: "1991219d9dbc42a99aff77e663af8ca51ced592cd6685c9485e3458302d3d4f8"
|
||||
sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.3"
|
||||
version: "2.9.1"
|
||||
image_picker_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_windows
|
||||
sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
import_sorter:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
|
@ -827,26 +892,26 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.13"
|
||||
version: "0.12.16"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
||||
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
version: "0.5.0"
|
||||
material_design_icons_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: material_design_icons_flutter
|
||||
sha256: "8ef8562d16e747b2d93e5da5c2508931588939c5c00ebc8e2768e803db7dfd3c"
|
||||
sha256: "6f986b7a51f3ad4c00e33c5c84e8de1bdd140489bbcdc8b66fc1283dad4dea5a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.7096"
|
||||
version: "7.0.7296"
|
||||
memoize:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -859,10 +924,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
||||
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.0"
|
||||
version: "1.9.1"
|
||||
mime:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -888,13 +953,13 @@ packages:
|
|||
source: hosted
|
||||
version: "3.8.2"
|
||||
navigation_builder:
|
||||
dependency: transitive
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
name: navigation_builder
|
||||
sha256: cbf966253e1f5b1798f3fbcae571fb6d452e5c7a606a5c451e2b9a3d343920f0
|
||||
sha256: "95e25150191d9cd4e4b86504f33cd9e786d1e6732edb2e3e635bbedc5ef0dea7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.2+4"
|
||||
version: "0.0.3"
|
||||
node_preamble:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -963,10 +1028,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.8.3"
|
||||
path_parsing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -979,10 +1044,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9"
|
||||
sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.13"
|
||||
version: "2.0.15"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1019,58 +1084,58 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_windows
|
||||
sha256: "642ddf65fde5404f83267e8459ddb4556316d3ee6d511ed193357e25caa3632d"
|
||||
sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
version: "2.1.7"
|
||||
pdf:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pdf
|
||||
sha256: "6cd57e8e6d052bd1078f18e0dc7cd6701fad6288231c1ce99d66ef5034d14e61"
|
||||
sha256: "586d3debf5432e5377044754032cfa53ab45e9abf371d4865e9ad5019570e246"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.9.0"
|
||||
pedantic:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pedantic
|
||||
sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "3.10.1"
|
||||
permission_handler:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: e474a8b0de5a3ce6f0960599c0b24ab3441a200a8705f4131e7bb926027100db
|
||||
sha256: "284a66179cabdf942f838543e10413246f06424d960c92ba95c84439154fcac8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.1.0"
|
||||
version: "11.0.1"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: a512e0fa8abcb0659d938ec2df93a70eb1df1fdea5fdc6d79a866bfd858a28fc
|
||||
sha256: ace7d15a3d1a4a0b91c041d01e5405df221edb9de9116525efc773c74e6fc790
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.2+1"
|
||||
version: "11.0.5"
|
||||
permission_handler_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: "9c370ef6a18b1c4b2f7f35944d644a56aa23576f23abee654cf73968de93f163"
|
||||
sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.7"
|
||||
version: "9.1.4"
|
||||
permission_handler_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_platform_interface
|
||||
sha256: "68abbc472002b5e6dfce47fe9898c6b7d8328d58b5d2524f75e277c07a97eb84"
|
||||
sha256: f2343e9fa9c22ae4fd92d4732755bfe452214e7189afcc097380950cf567b4b2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.9.0"
|
||||
version: "3.11.5"
|
||||
permission_handler_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_windows
|
||||
sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1091,10 +1156,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: pinput
|
||||
sha256: "1773743c188cdd2f8d0398ea708ec72645bb41ac9311755c4f7bb03a4184bdcf"
|
||||
sha256: a92b55ecf9c25d1b9e100af45905385d5bc34fc9b6b04177a9e82cb88fe4d805
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.31"
|
||||
version: "3.0.1"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1131,10 +1196,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: printing
|
||||
sha256: fe654363cd0114b50a0815b24e96957c7e9a60eb4e3b7ccfe71cf3f2b7114cb2
|
||||
sha256: e7c383dca95ee7b88c02dc1c66638628d3dcdc2fb2cc47e7a595facd47e46b56
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.10.1"
|
||||
version: "5.11.0"
|
||||
process:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1228,34 +1293,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: sentry
|
||||
sha256: "81c1f32496ff04476d6ddfe5894215b1034d185301d2e3dffd272853392c5ea7"
|
||||
sha256: "830667eadc0398fea3a3424ed1b74568e2db603a42758d0922e2f2974ce55a60"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.20.1"
|
||||
version: "7.10.1"
|
||||
sentry_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sentry_flutter
|
||||
sha256: "5ca2c8d86c220f7ad3109bedceb2c51b0e90bac5218e732be98ea2cba8006461"
|
||||
sha256: "6730f41b304c6fb0fa590dacccaf73ba11082fc64b274cfe8a79776f2b95309c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.20.1"
|
||||
version: "7.10.1"
|
||||
share_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: share_plus
|
||||
sha256: "8c6892037b1824e2d7e8f59d54b3105932899008642e6372e5079c6939b4b625"
|
||||
sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.1"
|
||||
version: "7.1.0"
|
||||
share_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_platform_interface
|
||||
sha256: "82ddd4ab9260c295e6e39612d4ff00390b9a7a21f1bb1da771e2f232d80ab8a1"
|
||||
sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.0"
|
||||
version: "3.3.0"
|
||||
shared_preferences:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1348,10 +1413,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: sign_in_with_apple
|
||||
sha256: ac3b113767dfdd765078c507dad9d4d9fe96b669cc7bd88fc36fc15376fb3400
|
||||
sha256: "0975c23b9f8b30a80e27d5659a75993a093d4cb5f4eb7d23a9ccc586fea634e0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.3.0"
|
||||
version: "5.0.0"
|
||||
sign_in_with_apple_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1377,10 +1442,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: smart_auth
|
||||
sha256: "8cfaec55b77d5930ed1666bb7ae70db5bade099bb1422401386853b400962113"
|
||||
sha256: a25229b38c02f733d0a4e98d941b42bed91a976cb589e934895e60ccfa674cf6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
version: "1.1.1"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1409,10 +1474,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: source_span
|
||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.1"
|
||||
version: "1.10.0"
|
||||
sqflite:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1441,10 +1506,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: states_rebuilder
|
||||
sha256: e8612993e97a5caeb9d983f6081304ef10868ba436ae49a723ee089ab51e2d12
|
||||
sha256: bf1a5ab5c543acdefce35e60f482eb7ab592339484fe3266d147ee597f18dc92
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.0"
|
||||
version: "6.3.0"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1521,26 +1586,26 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: test
|
||||
sha256: a5fcd2d25eeadbb6589e80198a47d6a464ba3e2049da473943b8af9797900c2d
|
||||
sha256: "13b41f318e2a5751c3169137103b60c584297353d4b1761b66029bae6411fe46"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.22.0"
|
||||
version: "1.24.3"
|
||||
test_api:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
||||
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.16"
|
||||
version: "0.6.0"
|
||||
test_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_core
|
||||
sha256: "0ef9755ec6d746951ba0aabe62f874b707690b5ede0fecc818b138fcc9b14888"
|
||||
sha256: "99806e9e6d95c7b059b7a0fc08f07fc53fabe54a829497f0d9676299f1e8637e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.20"
|
||||
version: "0.5.3"
|
||||
timeago:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1609,10 +1674,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
sha256: e29039160ab3730e42f3d811dc2a6d5f2864b90a70fb765ea60144b03307f682
|
||||
sha256: b651aad005e0cb06a01dbd84b428a301916dc75f0e7ea6165f80057fee2d8e8e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
version: "3.0.6"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1633,18 +1698,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "574cfbe2390666003c3a1d129bdc4574aaa6728f0c00a4829a81c316de69dd9b"
|
||||
sha256: "2942294a500b4fa0b918685aff406773ba0a4cd34b7f42198742a94083020ce5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.15"
|
||||
version: "2.0.20"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "97c9067950a0d09cbd93e2e3f0383d1403989362b97102fbf446473a48079a4b"
|
||||
sha256: "95fef3129dc7cfaba2bc3d5ba2e16063bb561fc6d78e63eee16162bc70029069"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.4"
|
||||
version: "3.0.8"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1681,10 +1746,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7
|
||||
sha256: c620a6f783fa22436da68e42db7ebbf18b8c44b9a46ab911f666ff09ffd9153f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.0"
|
||||
version: "11.7.1"
|
||||
vs_scrollbar:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vs_scrollbar
|
||||
sha256: "6a2df5e2597064e8dbb8fc3679065d8e748d711fa979f045328c98b7100b1665"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1693,6 +1766,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.4-beta"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1705,10 +1786,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: webdriver
|
||||
sha256: ef67178f0cc7e32c1494645b11639dd1335f1d18814aa8435113a92e9ef9d841
|
||||
sha256: "3c923e918918feeb90c4c9fdf1fe39220fa4c0e8e2c0fffaded174498ef86c49"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.2"
|
||||
webkit_inspection_protocol:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -1721,34 +1802,34 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: webview_flutter
|
||||
sha256: "392c1d83b70fe2495de3ea2c84531268d5b8de2de3f01086a53334d8b6030a88"
|
||||
sha256: c1ab9b81090705c6069197d9fdc1625e587b52b8d70cdde2339d177ad0dbb98e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.4"
|
||||
version: "4.4.1"
|
||||
webview_flutter_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_android
|
||||
sha256: "8b3b2450e98876c70bfcead876d9390573b34b9418c19e28168b74f6cb252dbd"
|
||||
sha256: b0cd33dd7d3dd8e5f664e11a19e17ba12c352647269921a3b568406b001f1dff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.4"
|
||||
version: "3.12.0"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_platform_interface
|
||||
sha256: "812165e4e34ca677bdfbfa58c01e33b27fd03ab5fa75b70832d4b7d4ca1fa8cf"
|
||||
sha256: "6d9213c65f1060116757a7c473247c60f3f7f332cac33dc417c9e362a9a13e4f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.5"
|
||||
version: "2.6.0"
|
||||
webview_flutter_wkwebview:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_wkwebview
|
||||
sha256: a5364369c758892aa487cbf59ea41d9edd10f9d9baf06a94e80f1bd1b4c7bbc0
|
||||
sha256: "30b9af6bdd457b44c08748b9190d23208b5165357cc2eb57914fee1366c42974"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.9.5"
|
||||
version: "3.9.1"
|
||||
widget_kit_plugin:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1761,10 +1842,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||
sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
version: "4.1.4"
|
||||
window_manager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -1798,5 +1879,5 @@ packages:
|
|||
source: hosted
|
||||
version: "3.1.1"
|
||||
sdks:
|
||||
dart: ">=2.19.0 <3.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
dart: ">=3.1.0 <4.0.0"
|
||||
flutter: ">=3.13.0"
|
||||
|
|
|
|||
40
pubspec.yaml
40
pubspec.yaml
|
|
@ -6,7 +6,7 @@ documentation: https://invoiceninja.github.io
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.12.0 <3.0.0'
|
||||
sdk: '>=3.1.0 <4.0.0'
|
||||
|
||||
flutter_icons:
|
||||
android: true
|
||||
|
|
@ -21,10 +21,10 @@ dependencies:
|
|||
flutter_localizations:
|
||||
sdk: flutter
|
||||
#google_sign_in: ^6.0.1
|
||||
google_sign_in: 5.4.4
|
||||
google_sign_in: ^6.1.5
|
||||
in_app_review: ^2.0.4
|
||||
in_app_purchase: ^3.1.1
|
||||
pinput: ^2.2.11
|
||||
pinput: ^3.0.1
|
||||
#pinput: ^2.2.23
|
||||
#pinput:
|
||||
# git:
|
||||
|
|
@ -35,26 +35,26 @@ dependencies:
|
|||
http: ^0.13.3
|
||||
path_provider: ^2.0.2
|
||||
shared_preferences: ^2.0.6
|
||||
material_design_icons_flutter: ^6.0.7096
|
||||
material_design_icons_flutter: ^7.0.7296
|
||||
built_value: ^8.1.2
|
||||
built_collection: ^5.1.0
|
||||
memoize: ^3.0.0
|
||||
cached_network_image: 3.0.0 # imageRenderMethodForWeb: ImageRenderMethodForWeb.HttpGet,
|
||||
url_launcher: ^6.0.20
|
||||
share_plus: ^6.3.1
|
||||
intl: ^0.17.0
|
||||
flutter_slidable: ^2.0.0
|
||||
share_plus: ^7.1.0
|
||||
intl: 0.17.0
|
||||
flutter_slidable: ^3.0.0
|
||||
charts_flutter: ^0.12.0
|
||||
#qr_flutter: ^4.0.0
|
||||
qr_flutter: # https://github.com/theyakka/qr.flutter/issues/174#issuecomment-1084235757
|
||||
git:
|
||||
url: https://github.com/theyakka/qr.flutter.git
|
||||
local_auth: ^2.1.5
|
||||
sentry_flutter: ^6.20.1
|
||||
image_picker: ^0.8.6+3
|
||||
sentry_flutter: ^7.10.1
|
||||
image_picker: ^1.0.4
|
||||
flutter_colorpicker: ^1.0.3
|
||||
flutter_json_viewer: ^1.0.1
|
||||
webview_flutter: ^3.0.4
|
||||
webview_flutter: ^4.4.1
|
||||
timeago: ^3.1.0
|
||||
package_info: ^2.0.2
|
||||
rounded_loading_button: ^2.1.0
|
||||
|
|
@ -62,9 +62,12 @@ dependencies:
|
|||
# flutter_launcher_icons: ^0.9.1
|
||||
overflow_view: ^0.3.1
|
||||
flutter_styled_toast: ^2.0.0
|
||||
permission_handler: 9.1.0 # Disables Windows support to fix crash
|
||||
permission_handler: ^11.0.1 # Disables Windows support to fix crash
|
||||
file_picker: ^5.2.5
|
||||
boardview: ^0.2.2
|
||||
#boardview: ^0.2.2
|
||||
boardview:
|
||||
git:
|
||||
url: https://github.com/BenPoell/FlutterBoardView.git
|
||||
pointer_interceptor: ^0.9.0
|
||||
contacts_service: ^0.6.3
|
||||
diacritic: ^0.1.3
|
||||
|
|
@ -77,14 +80,14 @@ dependencies:
|
|||
# url: https://github.com/superlistapp/super_editor.git
|
||||
# path: super_editor
|
||||
html2md: ^1.2.6
|
||||
printing: ^5.10.1
|
||||
image_cropper: ^3.0.1
|
||||
printing: ^5.11.0
|
||||
image_cropper: ^4.0.1
|
||||
msal_js: ^2.14.0
|
||||
sign_in_with_apple: ^4.3.0
|
||||
sign_in_with_apple: ^5.0.0
|
||||
window_manager: ^0.3.0
|
||||
# bitsdojo_window: ^0.1.5
|
||||
intl_phone_field: ^3.1.0
|
||||
flutter_staggered_grid_view: ^0.6.2
|
||||
flutter_staggered_grid_view: ^0.7.0
|
||||
desktop_drop: ^0.4.1
|
||||
widget_kit_plugin: ^0.1.1
|
||||
pinch_zoom: ^1.0.0
|
||||
|
|
@ -92,6 +95,11 @@ dependencies:
|
|||
# idb_shim: ^1.11.1+1
|
||||
collection: ^1.15.0-nullsafety.4
|
||||
|
||||
dependency_overrides:
|
||||
intl: any
|
||||
navigation_builder: ^0.0.3
|
||||
states_rebuilder: ^6.3.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
// Import Flutter Driver API
|
||||
|
||||
// Dart imports:
|
||||
import 'dart:async';
|
||||
|
||||
// Package imports:
|
||||
import 'package:flutter_driver/flutter_driver.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
|
@ -15,7 +12,7 @@ void main() {
|
|||
group('LOGIN TEST', () {
|
||||
late TestLocalization localization;
|
||||
FlutterDriver? driver;
|
||||
StreamSubscription? streamSubscription;
|
||||
//StreamSubscription? streamSubscription;
|
||||
|
||||
setUpAll(() async {
|
||||
localization = TestLocalization('en');
|
||||
|
|
@ -35,9 +32,12 @@ void main() {
|
|||
if (driver != null) {
|
||||
driver!.close();
|
||||
}
|
||||
|
||||
/*
|
||||
if (streamSubscription != null) {
|
||||
streamSubscription.cancel();
|
||||
}
|
||||
*/
|
||||
});
|
||||
|
||||
group('SELF-HOSTED', () {
|
||||
|
|
|
|||
|
|
@ -8,10 +8,9 @@ set(BINARY_NAME "invoiceninja")
|
|||
|
||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||
# versions of CMake.
|
||||
cmake_policy(SET CMP0063 NEW)
|
||||
|
||||
set(PDFIUM_VERSION "latest" CACHE STRING "" FORCE)
|
||||
set(PDFIUM_ARCH "x64" CACHE STRING "" FORCE)
|
||||
cmake_policy(VERSION 3.14...3.25)
|
||||
|
||||
# Define build configuration option.
|
||||
get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
|
|
@ -55,6 +54,7 @@ add_subdirectory(${FLUTTER_MANAGED_DIR})
|
|||
# Application build; see runner/CMakeLists.txt.
|
||||
add_subdirectory("runner")
|
||||
|
||||
|
||||
# Generated plugin build rules, which manage building the plugins and adding
|
||||
# them to the application.
|
||||
include(flutter/generated_plugins.cmake)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@
|
|||
#include "generated_plugin_registrant.h"
|
||||
|
||||
#include <desktop_drop/desktop_drop_plugin.h>
|
||||
#include <file_selector_windows/file_selector_windows.h>
|
||||
#include <local_auth_windows/local_auth_plugin.h>
|
||||
#include <permission_handler_windows/permission_handler_windows_plugin.h>
|
||||
#include <printing/printing_plugin.h>
|
||||
#include <screen_retriever/screen_retriever_plugin.h>
|
||||
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||
|
|
@ -19,8 +21,12 @@
|
|||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||
DesktopDropPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("DesktopDropPlugin"));
|
||||
FileSelectorWindowsRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("FileSelectorWindows"));
|
||||
LocalAuthPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("LocalAuthPlugin"));
|
||||
PermissionHandlerWindowsPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
|
||||
PrintingPluginRegisterWithRegistrar(
|
||||
registry->GetRegistrarForPlugin("PrintingPlugin"));
|
||||
ScreenRetrieverPluginRegisterWithRegistrar(
|
||||
|
|
|
|||
|
|
@ -4,7 +4,9 @@
|
|||
|
||||
list(APPEND FLUTTER_PLUGIN_LIST
|
||||
desktop_drop
|
||||
file_selector_windows
|
||||
local_auth_windows
|
||||
permission_handler_windows
|
||||
printing
|
||||
screen_retriever
|
||||
sentry_flutter
|
||||
|
|
|
|||
|
|
@ -31,6 +31,11 @@ bool FlutterWindow::OnCreate() {
|
|||
this->Show();
|
||||
});
|
||||
|
||||
// Flutter can complete the first frame before the "show window" callback is
|
||||
// registered. The following call ensures a frame is pending to ensure the
|
||||
// window is shown. It is a no-op if the first frame hasn't completed yet.
|
||||
flutter_controller_->ForceRedraw();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,16 +47,17 @@ std::string Utf8FromUtf16(const wchar_t* utf16_string) {
|
|||
}
|
||||
int target_length = ::WideCharToMultiByte(
|
||||
CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
|
||||
-1, nullptr, 0, nullptr, nullptr);
|
||||
-1, nullptr, 0, nullptr, nullptr)
|
||||
-1; // remove the trailing null character
|
||||
int input_length = (int)wcslen(utf16_string);
|
||||
std::string utf8_string;
|
||||
if (target_length == 0 || target_length > utf8_string.max_size()) {
|
||||
if (target_length <= 0 || target_length > utf8_string.max_size()) {
|
||||
return utf8_string;
|
||||
}
|
||||
utf8_string.resize(target_length);
|
||||
int converted_length = ::WideCharToMultiByte(
|
||||
CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string,
|
||||
-1, utf8_string.data(),
|
||||
target_length, nullptr, nullptr);
|
||||
input_length, utf8_string.data(), target_length, nullptr, nullptr);
|
||||
if (converted_length == 0) {
|
||||
return std::string();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ class WindowClassRegistrar {
|
|||
public:
|
||||
~WindowClassRegistrar() = default;
|
||||
|
||||
// Returns the singleton registar instance.
|
||||
// Returns the singleton registrar instance.
|
||||
static WindowClassRegistrar* GetInstance() {
|
||||
if (!instance_) {
|
||||
instance_ = new WindowClassRegistrar();
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ class Win32Window {
|
|||
// OS callback called by message pump. Handles the WM_NCCREATE message which
|
||||
// is passed when the non-client area is being created and enables automatic
|
||||
// non-client DPI scaling so that the non-client area automatically
|
||||
// responsponds to changes in DPI. All other messages are handled by
|
||||
// responds to changes in DPI. All other messages are handled by
|
||||
// MessageHandler.
|
||||
static LRESULT CALLBACK WndProc(HWND const window,
|
||||
UINT const message,
|
||||
|
|
|
|||
Loading…
Reference in New Issue