update pubspec
This commit is contained in:
@@ -59,7 +59,7 @@ class _AppState extends State<App> {
|
|||||||
final CartonSizeModel cartonSizeModel = new CartonSizeModel();
|
final CartonSizeModel cartonSizeModel = new CartonSizeModel();
|
||||||
final ProcessingModel processingModel = new ProcessingModel();
|
final ProcessingModel processingModel = new ProcessingModel();
|
||||||
|
|
||||||
AppTranslationsDelegate _newLocaleDelegate;
|
late AppTranslationsDelegate _newLocaleDelegate;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@@ -81,7 +81,8 @@ class _AppState extends State<App> {
|
|||||||
..addModel(cartonSizeModel)
|
..addModel(cartonSizeModel)
|
||||||
..addModel(processingModel);
|
..addModel(processingModel);
|
||||||
|
|
||||||
_newLocaleDelegate = AppTranslationsDelegate(newLocale: null);
|
_newLocaleDelegate = AppTranslationsDelegate(
|
||||||
|
newLocale: Translation().supportedLocales().first);
|
||||||
Translation().onLocaleChanged = onLocaleChange;
|
Translation().onLocaleChanged = onLocaleChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
|
|
||||||
enum Flavor { DEV, STAGING, PRODUCTION, LOCAL }
|
enum Flavor { UNSET, DEV, STAGING, PRODUCTION, LOCAL }
|
||||||
const FlavorNames = ["Development", "Staging", "Production", "Local"];
|
const FlavorNames = ["Unset", "Development", "Staging", "Production", "Local"];
|
||||||
|
|
||||||
class Config {
|
class Config {
|
||||||
static Config _instance;
|
static Config _instance = Config(
|
||||||
|
flavor: Flavor.UNSET,
|
||||||
|
apiURL: "",
|
||||||
|
bucketName: "",
|
||||||
|
reportProjectID: "",
|
||||||
|
reportURL: "");
|
||||||
|
|
||||||
final Flavor flavor;
|
final Flavor flavor;
|
||||||
final String name;
|
final String name;
|
||||||
@@ -17,14 +22,14 @@ class Config {
|
|||||||
final String bucketName;
|
final String bucketName;
|
||||||
|
|
||||||
factory Config(
|
factory Config(
|
||||||
{@required Flavor flavor,
|
{required Flavor flavor,
|
||||||
@required String apiURL,
|
required String apiURL,
|
||||||
@required String reportURL,
|
required String reportURL,
|
||||||
@required String reportProjectID,
|
required String reportProjectID,
|
||||||
@required String bucketName,
|
required String bucketName,
|
||||||
Color color: Colors.blue,
|
Color color: Colors.blue,
|
||||||
Level level: Level.SEVERE}) {
|
Level level: Level.SEVERE}) {
|
||||||
_instance ??= Config._internal(flavor, FlavorNames[flavor.index], color,
|
_instance = Config._internal(flavor, FlavorNames[flavor.index], color,
|
||||||
apiURL, reportURL, level, reportProjectID, bucketName);
|
apiURL, reportURL, level, reportProjectID, bucketName);
|
||||||
|
|
||||||
Logger.root.level = level;
|
Logger.root.level = level;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import 'transalation.dart';
|
|||||||
class AppTranslationsDelegate extends LocalizationsDelegate<AppTranslations> {
|
class AppTranslationsDelegate extends LocalizationsDelegate<AppTranslations> {
|
||||||
final Locale newLocale;
|
final Locale newLocale;
|
||||||
|
|
||||||
const AppTranslationsDelegate({this.newLocale});
|
const AppTranslationsDelegate({required this.newLocale});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool isSupported(Locale locale) {
|
bool isSupported(Locale locale) {
|
||||||
@@ -22,4 +22,4 @@ class AppTranslationsDelegate extends LocalizationsDelegate<AppTranslations> {
|
|||||||
bool shouldReload(LocalizationsDelegate<AppTranslations> old) {
|
bool shouldReload(LocalizationsDelegate<AppTranslations> old) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,5 +23,5 @@ class Translation {
|
|||||||
supportedLanguagesCodes.map<Locale>((language) => Locale(language, ""));
|
supportedLanguagesCodes.map<Locale>((language) => Locale(language, ""));
|
||||||
|
|
||||||
//function to be invoked when changing the language
|
//function to be invoked when changing the language
|
||||||
LocaleChangeCallback onLocaleChanged;
|
LocaleChangeCallback? onLocaleChanged;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,22 +16,22 @@ class PaginatorListener<T> {
|
|||||||
|
|
||||||
List<String> ids = [];
|
List<String> ids = [];
|
||||||
List<T> data = [];
|
List<T> data = [];
|
||||||
DocumentSnapshot prev;
|
DocumentSnapshot? prev;
|
||||||
int rowPerLoad = 10;
|
int rowPerLoad = 10;
|
||||||
bool ended = false;
|
bool ended = false;
|
||||||
bool isLoading = false;
|
bool isLoading = false;
|
||||||
bool insertNewByListener = false;
|
bool insertNewByListener = false;
|
||||||
ToObj toObj;
|
ToObj toObj;
|
||||||
CallBack onChange;
|
CallBack? onChange;
|
||||||
|
|
||||||
StreamSubscription<QuerySnapshot> listener;
|
StreamSubscription<QuerySnapshot>? listener;
|
||||||
Query listeningQuery;
|
Query? listeningQuery;
|
||||||
Query pageQuery;
|
Query? pageQuery;
|
||||||
|
|
||||||
PaginatorListener(this.toObj,
|
PaginatorListener(this.toObj,
|
||||||
{this.onChange, this.rowPerLoad = 10, this.insertNewByListener = false});
|
{this.onChange, this.rowPerLoad = 10, this.insertNewByListener = false});
|
||||||
|
|
||||||
Future<bool> refresh({Query listeningQuery, Query pageQuery}) {
|
Future<bool> refresh({Query? listeningQuery, Query? pageQuery}) {
|
||||||
this.listeningQuery = listeningQuery ?? this.listeningQuery;
|
this.listeningQuery = listeningQuery ?? this.listeningQuery;
|
||||||
this.pageQuery = pageQuery ?? this.pageQuery;
|
this.pageQuery = pageQuery ?? this.pageQuery;
|
||||||
_clearState();
|
_clearState();
|
||||||
@@ -45,7 +45,7 @@ class PaginatorListener<T> {
|
|||||||
data = [];
|
data = [];
|
||||||
ended = false;
|
ended = false;
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
if (listener != null) listener.cancel();
|
if (listener != null) listener!.cancel();
|
||||||
listener = null;
|
listener = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,35 +58,39 @@ class PaginatorListener<T> {
|
|||||||
final String isDeletedField = 'is_deleted';
|
final String isDeletedField = 'is_deleted';
|
||||||
void _initListener() {
|
void _initListener() {
|
||||||
Query _query =
|
Query _query =
|
||||||
listeningQuery.orderBy(updateTimeField, descending: true).limit(1);
|
listeningQuery!.orderBy(updateTimeField, descending: true).limit(1);
|
||||||
_query.getDocuments(source: Source.server).then((QuerySnapshot snapshot) {
|
_query
|
||||||
int count = snapshot.documents.length;
|
.get(GetOptions(source: Source.server))
|
||||||
|
.then((QuerySnapshot snapshot) {
|
||||||
|
int count = snapshot.docs.length;
|
||||||
int updateTime = 0;
|
int updateTime = 0;
|
||||||
if (count == 1) {
|
if (count == 1) {
|
||||||
updateTime = snapshot.documents[0].data[updateTimeField];
|
Map<String, dynamic> data =
|
||||||
|
snapshot.docs[0].data()! as Map<String, dynamic>;
|
||||||
|
updateTime = data[updateTimeField];
|
||||||
}
|
}
|
||||||
|
|
||||||
Query _queryListener = listeningQuery
|
Query _queryListener = listeningQuery!
|
||||||
.where(updateTimeField, isGreaterThan: updateTime)
|
.where(updateTimeField, isGreaterThan: updateTime)
|
||||||
.orderBy(updateTimeField, descending: true);
|
.orderBy(updateTimeField, descending: true);
|
||||||
|
|
||||||
if (listener != null) listener.cancel();
|
if (listener != null) listener!.cancel();
|
||||||
listener =
|
listener =
|
||||||
_queryListener.snapshots(includeMetadataChanges: true).listen((qs) {
|
_queryListener.snapshots(includeMetadataChanges: true).listen((qs) {
|
||||||
qs.documentChanges.forEach((c) {
|
qs.docChanges.forEach((c) {
|
||||||
switch (c.type) {
|
switch (c.type) {
|
||||||
case DocumentChangeType.added:
|
case DocumentChangeType.added:
|
||||||
_update(c.document.documentID, c.document.data);
|
_update(c.doc.id, c.doc.data() as Map<String, dynamic>);
|
||||||
break;
|
break;
|
||||||
case DocumentChangeType.modified:
|
case DocumentChangeType.modified:
|
||||||
_update(c.document.documentID, c.document.data);
|
_update(c.doc.id, c.doc.data() as Map<String, dynamic>);
|
||||||
break;
|
break;
|
||||||
case DocumentChangeType.removed:
|
case DocumentChangeType.removed:
|
||||||
_remove(c.document.documentID, c.document.data);
|
_remove(c.doc.id, c.doc.data() as Map<String, dynamic>);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if (onChange != null) onChange();
|
if (onChange != null) onChange!();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -129,26 +133,26 @@ class PaginatorListener<T> {
|
|||||||
return this._load();
|
return this._load();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> _load({CallBack onStarted, CallBack onFinished}) async {
|
Future<bool> _load({CallBack? onStarted, CallBack? onFinished}) async {
|
||||||
if (ended) return ended;
|
if (ended) return ended;
|
||||||
Query _query =
|
Query _query =
|
||||||
prev != null ? pageQuery.startAfterDocument(prev) : pageQuery;
|
prev != null ? pageQuery!.startAfterDocument(prev!) : pageQuery!;
|
||||||
try {
|
try {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
if (onStarted != null) {
|
if (onStarted != null) {
|
||||||
onStarted();
|
onStarted();
|
||||||
}
|
}
|
||||||
if (onChange != null) onChange();
|
if (onChange != null) onChange!();
|
||||||
await _query
|
await _query
|
||||||
.where(isDeletedField, isEqualTo: false)
|
.where(isDeletedField, isEqualTo: false)
|
||||||
.limit(rowPerLoad)
|
.limit(rowPerLoad)
|
||||||
.getDocuments(source: Source.server)
|
.get(GetOptions(source: Source.server))
|
||||||
.then((QuerySnapshot snapshot) {
|
.then((QuerySnapshot snapshot) {
|
||||||
int count = snapshot.documents.length;
|
int count = snapshot.docs.length;
|
||||||
ended = count < rowPerLoad;
|
ended = count < rowPerLoad;
|
||||||
prev = count > 0 ? snapshot.documents[count - 1] : prev;
|
prev = count > 0 ? snapshot.docs[count - 1] : prev;
|
||||||
snapshot.documents.forEach((e) {
|
snapshot.docs.forEach((e) {
|
||||||
_add(e.documentID, e.data);
|
_add(e.id, e.data() as Map<String, dynamic>);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@@ -156,7 +160,7 @@ class PaginatorListener<T> {
|
|||||||
} finally {
|
} finally {
|
||||||
isLoading = false;
|
isLoading = false;
|
||||||
if (onFinished != null) onFinished();
|
if (onFinished != null) onFinished();
|
||||||
if (onChange != null) onChange();
|
if (onChange != null) onChange!();
|
||||||
}
|
}
|
||||||
return ended;
|
return ended;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,19 +10,17 @@ typedef OnScroll = void Function(bool down);
|
|||||||
class PaginatorListView<T> extends StatelessWidget {
|
class PaginatorListView<T> extends StatelessWidget {
|
||||||
final PaginatorListener<T> paginatorListener;
|
final PaginatorListener<T> paginatorListener;
|
||||||
final RowBuilder rowBuilder;
|
final RowBuilder rowBuilder;
|
||||||
final OnScroll onScroll;
|
final OnScroll? onScroll;
|
||||||
final ScrollController _scrollController;
|
final ScrollController _scrollController;
|
||||||
final Color color;
|
final Color color;
|
||||||
|
|
||||||
PaginatorListView(
|
PaginatorListView(
|
||||||
{Key key,
|
{Key? key,
|
||||||
this.paginatorListener,
|
required this.paginatorListener,
|
||||||
this.rowBuilder,
|
required this.rowBuilder,
|
||||||
this.onScroll,
|
this.onScroll,
|
||||||
this.color = Colors.blueAccent})
|
this.color = Colors.blueAccent})
|
||||||
: _scrollController = ScrollController(),
|
: _scrollController = ScrollController(),
|
||||||
assert(paginatorListener != null),
|
|
||||||
assert(rowBuilder != null),
|
|
||||||
super(key: key) {
|
super(key: key) {
|
||||||
_scrollController.addListener(() async {
|
_scrollController.addListener(() async {
|
||||||
if (_scrollController.position.pixels ==
|
if (_scrollController.position.pixels ==
|
||||||
@@ -32,7 +30,7 @@ class PaginatorListView<T> extends StatelessWidget {
|
|||||||
if (onScroll != null) {
|
if (onScroll != null) {
|
||||||
var down = _scrollController.position.userScrollDirection ==
|
var down = _scrollController.position.userScrollDirection ==
|
||||||
ScrollDirection.forward;
|
ScrollDirection.forward;
|
||||||
onScroll(down);
|
onScroll!(down);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
422
pubspec.lock
422
pubspec.lock
File diff suppressed because it is too large
Load Diff
82
pubspec.yaml
82
pubspec.yaml
@@ -1,58 +1,58 @@
|
|||||||
name: fcs
|
name: fcs
|
||||||
description: FCS Logistics
|
description: FCS Logistics
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none'
|
||||||
|
version: 1.0.6+10
|
||||||
version: 1.0.6+9
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
cupertino_icons: ^0.1.3
|
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
firebase_core: ^0.4.3+2
|
|
||||||
cloud_firestore: ^0.13.0+1
|
|
||||||
firebase_storage: ^3.1.0
|
|
||||||
firebase_auth: ^0.16.1
|
|
||||||
#firebase_auth: ^0.15.5+3
|
|
||||||
firebase_messaging: ^6.0.15
|
|
||||||
|
|
||||||
provider: ^4.3.2+1
|
cupertino_icons: ^1.0.3
|
||||||
image_picker: ^0.6.0+9
|
firebase_core: ^1.5.0
|
||||||
shared_preferences: ^0.5.7+3
|
cloud_firestore: ^2.5.0
|
||||||
|
firebase_storage: ^10.0.2
|
||||||
|
firebase_auth: "^3.0.2"
|
||||||
|
# firebase_messaging: ^6.0.15
|
||||||
|
|
||||||
|
provider: ^6.0.0
|
||||||
|
image_picker: ^0.8.3+3
|
||||||
|
shared_preferences: ^2.0.7
|
||||||
progress:
|
progress:
|
||||||
path:
|
path:
|
||||||
../flutter/packages/progress
|
../mokkon-flutter/packages/progress
|
||||||
flutter_datetime_picker: ^1.3.8
|
flutter_datetime_picker: ^1.5.1
|
||||||
dio: ^3.0.9
|
dio: ^4.0.0
|
||||||
package_info: ^0.4.0+6
|
package_info: ^2.0.2
|
||||||
google_api_availability: ^2.0.1
|
google_api_availability: ^3.0.1
|
||||||
intl: ^0.16.0
|
intl: ^0.17.0
|
||||||
font_awesome_flutter: ^8.0.1
|
font_awesome_flutter: ^9.1.0
|
||||||
photo_view: ^0.9.0
|
photo_view: ^0.12.0
|
||||||
uuid: ^2.0.4
|
uuid: ^3.0.4
|
||||||
zefyr:
|
# zefyr:
|
||||||
path_provider: ^1.6.11
|
path_provider: ^2.0.2
|
||||||
camera: ^0.4.2
|
camera: ^0.9.0
|
||||||
url_launcher: ^5.7.10
|
url_launcher: ^6.0.9
|
||||||
device_info: ^0.4.1+4
|
device_info: ^2.0.2
|
||||||
connectivity: ^2.0.2
|
connectivity: ^3.0.6
|
||||||
logging: ^0.11.4
|
logging: ^1.0.1
|
||||||
permission_handler: ^4.0.0
|
permission_handler: ^8.1.4+2
|
||||||
country_code_picker: ^1.3.12
|
country_code_picker: ^2.0.2
|
||||||
pin_input_text_field:
|
pin_input_text_field: ^4.1.0
|
||||||
flutter_icons: ^1.1.0
|
# flutter_icons: ^1.1.0
|
||||||
country_icons: ^1.1.1
|
country_icons: ^2.0.2
|
||||||
timeline_list: ^0.0.5
|
timeline_list: ^0.0.5
|
||||||
barcode_scan: ^2.0.2
|
# barcode_scan: ^2.0.2
|
||||||
flutter_pdfview: ^1.0.3
|
barcode_scan2: ^4.1.4
|
||||||
flutter_local_notifications: ^1.4.4+4
|
flutter_pdfview: ^1.2.1
|
||||||
share: '>=0.6.5+4 <2.0.0'
|
# flutter_local_notifications: ^8.1.1+1
|
||||||
cached_network_image: ^2.3.2+1
|
share: ^2.0.4
|
||||||
flutter_cache_manager: ^2.0.0
|
cached_network_image: ^3.1.0
|
||||||
|
flutter_cache_manager: ^3.1.2
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user