diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0ee208a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +triple_i_main_app/pubspec.lock +triple_i_main_app/pubspec.lock diff --git a/triple_i_main_app/lib/bloc/search.dart b/triple_i_main_app/lib/bloc/search.dart index 406790a..16cc1c0 100644 --- a/triple_i_main_app/lib/bloc/search.dart +++ b/triple_i_main_app/lib/bloc/search.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:bloc/bloc.dart'; -import 'package:data_connection_checker/data_connection_checker.dart'; +import 'package:connectivity/connectivity.dart'; import 'package:meta/meta.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -34,9 +34,9 @@ class SearchBloc extends Bloc { if (event is FetchSearchResults) { yield SearchLoading(); - final hasConnection = await DataConnectionChecker().hasConnection; + final hasConnection = await Connectivity().checkConnectivity(); - if (hasConnection) { + if (hasConnection != ConnectivityResult.none) { yield* _fetchSearchResults(symbol: event.symbol); } else { yield SearchResultsLoadingError(message: 'No internet connection'); diff --git a/triple_i_main_app/lib/helpers/gradient_helper.dart b/triple_i_main_app/lib/helpers/gradient_helper.dart index 03beba1..65be37e 100644 --- a/triple_i_main_app/lib/helpers/gradient_helper.dart +++ b/triple_i_main_app/lib/helpers/gradient_helper.dart @@ -36,9 +36,10 @@ class CssLike { } static Alignment _getEndAlignment(Object angleOrEndAlignment) { - if (angleOrEndAlignment == null) { - return Alignment.bottomCenter; - } else if (angleOrEndAlignment is num) { + // if (angleOrEndAlignment == null) { + // return Alignment.bottomCenter; + //} else + if (angleOrEndAlignment is num) { final angle = angleOrEndAlignment.toDouble(); return _degreesToAlignment(angle - 90.0); } else if (angleOrEndAlignment is Alignment) { diff --git a/triple_i_main_app/lib/models/markets/market_active/market_active_model.dart b/triple_i_main_app/lib/models/markets/market_active/market_active_model.dart index a02e160..0990496 100644 --- a/triple_i_main_app/lib/models/markets/market_active/market_active_model.dart +++ b/triple_i_main_app/lib/models/markets/market_active/market_active_model.dart @@ -1,5 +1,3 @@ -import 'package:meta/meta.dart'; - import './market_active.dart'; class MarketMoversModelData { diff --git a/triple_i_main_app/lib/models/markets/sector_performance/sector_performance_model.dart b/triple_i_main_app/lib/models/markets/sector_performance/sector_performance_model.dart index 1699904..da79ee1 100644 --- a/triple_i_main_app/lib/models/markets/sector_performance/sector_performance_model.dart +++ b/triple_i_main_app/lib/models/markets/sector_performance/sector_performance_model.dart @@ -1,6 +1,3 @@ -import 'package:meta/meta.dart'; - -// This is the main model. class SectorPerformanceModel { final SectorPerformanceDataModel oneDay; final SectorPerformanceDataModel fiveDays; diff --git a/triple_i_main_app/lib/models/markets/sector_performance/sector_perfromance_metadata_model.dart b/triple_i_main_app/lib/models/markets/sector_performance/sector_perfromance_metadata_model.dart index fa516e6..bbcbb08 100644 --- a/triple_i_main_app/lib/models/markets/sector_performance/sector_perfromance_metadata_model.dart +++ b/triple_i_main_app/lib/models/markets/sector_performance/sector_perfromance_metadata_model.dart @@ -1,18 +1,15 @@ -import 'package:meta/meta.dart'; - class SectorPerformanceMedataDatatModel { final String? information; final String? lastRefreshed; - SectorPerformanceMedataDatatModel({ - required this.information, - required this.lastRefreshed - }); + SectorPerformanceMedataDatatModel( + {required this.information, required this.lastRefreshed}); - factory SectorPerformanceMedataDatatModel.fromJson(Map json) { + factory SectorPerformanceMedataDatatModel.fromJson( + Map json) { return SectorPerformanceMedataDatatModel( information: json['Information'], lastRefreshed: json['Last Refreshed'], ); } -} \ No newline at end of file +} diff --git a/triple_i_main_app/lib/models/news/news.dart b/triple_i_main_app/lib/models/news/news.dart index 6712c75..7eeb79f 100644 --- a/triple_i_main_app/lib/models/news/news.dart +++ b/triple_i_main_app/lib/models/news/news.dart @@ -1,5 +1,3 @@ -import 'package:meta/meta.dart'; - import './single_new_model.dart'; class NewsDataModel { diff --git a/triple_i_main_app/lib/models/news/single_new_model.dart b/triple_i_main_app/lib/models/news/single_new_model.dart index 0908bb4..72461b7 100644 --- a/triple_i_main_app/lib/models/news/single_new_model.dart +++ b/triple_i_main_app/lib/models/news/single_new_model.dart @@ -1,5 +1,3 @@ -import 'package:meta/meta.dart'; - class SingleNewModel { final String? source; final String? title; @@ -42,7 +40,8 @@ class SingleNewModel { [bool finnhub = false]) { List testList; finnhub == false - ? testList = items!.map((item) => SingleNewModel.fromJson(item)).toList() + ? testList = + items!.map((item) => SingleNewModel.fromJson(item)).toList() : testList = items!.map((item) => SingleNewModel.fromJsonFinnhub(item)).toList(); print('PP in toList method testList: $testList'); diff --git a/triple_i_main_app/lib/models/profile/profile.dart b/triple_i_main_app/lib/models/profile/profile.dart index 578d88a..c64d53b 100644 --- a/triple_i_main_app/lib/models/profile/profile.dart +++ b/triple_i_main_app/lib/models/profile/profile.dart @@ -1,5 +1,3 @@ -import 'package:meta/meta.dart'; - import './stock_profile.dart'; import './stock_quote.dart'; //import './stock_chart.dart'; diff --git a/triple_i_main_app/lib/models/profile/stock_chart.dart b/triple_i_main_app/lib/models/profile/stock_chart.dart index 2ee20e5..17d8b74 100644 --- a/triple_i_main_app/lib/models/profile/stock_chart.dart +++ b/triple_i_main_app/lib/models/profile/stock_chart.dart @@ -1,5 +1,3 @@ -import 'package:meta/meta.dart'; - class StockChart { final String? date; final double? open; diff --git a/triple_i_main_app/lib/models/search.dart b/triple_i_main_app/lib/models/search.dart index 7af2610..9f650b3 100644 --- a/triple_i_main_app/lib/models/search.dart +++ b/triple_i_main_app/lib/models/search.dart @@ -1,9 +1,4 @@ -import 'package:meta/meta.dart'; - -enum ListType { - searchHistory, - searchResults -} +enum ListType { searchHistory, searchResults } class StockSearch { final String? symbol; @@ -13,13 +8,10 @@ class StockSearch { }); static List convertToList(List items) { - return items - .map((item) => StockSearch.fromJson(item)) - .toList(); + return items.map((item) => StockSearch.fromJson(item)).toList(); } - - factory StockSearch.fromJson( Map json) { + + factory StockSearch.fromJson(Map json) { return StockSearch(symbol: json['1. symbol']); } - -} \ No newline at end of file +} diff --git a/triple_i_main_app/lib/models/storage.dart b/triple_i_main_app/lib/models/storage.dart index ca2d715..9bef7e6 100644 --- a/triple_i_main_app/lib/models/storage.dart +++ b/triple_i_main_app/lib/models/storage.dart @@ -1,7 +1,4 @@ -import 'package:meta/meta.dart'; - class StorageModel { - final String? symbol; final String? companyName; @@ -11,11 +8,9 @@ class StorageModel { }); static List convertToList(List items) { - return items - .map((item) => StorageModel.fromJson(item)) - .toList(); + return items.map((item) => StorageModel.fromJson(item)).toList(); } - + Map toJson() { final Map data = new Map(); @@ -31,4 +26,4 @@ class StorageModel { companyName: json['companyName'], ); } -} \ No newline at end of file +} diff --git a/triple_i_main_app/lib/repository/k_chart/k_chart_widget.dart b/triple_i_main_app/lib/repository/k_chart/k_chart_widget.dart index 3788a39..08d1838 100644 --- a/triple_i_main_app/lib/repository/k_chart/k_chart_widget.dart +++ b/triple_i_main_app/lib/repository/k_chart/k_chart_widget.dart @@ -293,6 +293,7 @@ class _KChartWidgetState extends State itemExtent: 14.0, shrinkWrap: true, itemBuilder: (context, index) { + // ignore: deprecated_member_use_from_same_package final translations = widget.isChinese ? kChartTranslations['zh_CN']! : widget.translations.of(context); diff --git a/triple_i_main_app/lib/screens/profile_tabs/chart_tab.dart b/triple_i_main_app/lib/screens/profile_tabs/chart_tab.dart index 2357fdf..afab742 100644 --- a/triple_i_main_app/lib/screens/profile_tabs/chart_tab.dart +++ b/triple_i_main_app/lib/screens/profile_tabs/chart_tab.dart @@ -1,15 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:main/repository/k_chart/chart_translations.dart'; import 'package:main/repository/k_chart/flutter_k_chart.dart'; //import 'package:main/packages/chart_translations.dart'; //import 'package:main/packages/flutter_k_chart.dart'; import 'package:main/repository/profile/client.dart'; import 'package:main/screens/profile_tabs/technical_chart_screen.dart'; import 'package:main/widgets/loading_indicator.dart'; -import 'package:date_range_picker/date_range_picker.dart' as DateRangePicker; - -import '../../../helpers/color_helper.dart'; -import '../../../helpers/text_helper.dart'; import '../../../models/profile/stock_profile.dart'; import '../../../models/profile/stock_quote.dart'; @@ -156,24 +153,23 @@ class _ChartTabState extends State { return LoadingIndicatorWidget(); else { if (!_isMovingToNextScreen) _jumper(); - return Container() - // KChartWidget( - // _durationCharts['$_currentDuration'], - // chartStyle, - // chartColors, - // isLine: isLine, - // mainState: _mainState, - // volHidden: _volHidden, - // secondaryState: _secondaryState, - // fixedLength: 2, - // timeFormat: TimeFormat.YEAR_MONTH_DAY, - // translations: kChartTranslations, - // showNowPrice: _showNowPrice, - // //`isChinese` is Deprecated, Use `translations` instead. - // isChinese: false, - // hideGrid: _hideGrid, - // maDayList: [1, 100, 1000], - // ) + return KChartWidget( + _durationCharts['$_currentDuration'], + chartStyle, + chartColors, + isLine: isLine, + mainState: _mainState, + volHidden: _volHidden, + secondaryState: _secondaryState, + fixedLength: 2, + timeFormat: TimeFormat.YEAR_MONTH_DAY, + translations: kChartTranslations, + showNowPrice: _showNowPrice, + //`isChinese` is Deprecated, Use `translations` instead. + isChinese: false, + hideGrid: _hideGrid, + maDayList: [1, 100, 1000], + ) // KChartWidget( // _durationCharts['$_currentDuration'], // isLine: isLine, @@ -203,96 +199,70 @@ class _ChartTabState extends State { List buildButtons() { return [ - button( - "Line", - onPressed: () => isLine = true, - selected: isLine, - ), - button( - "Bars", - onPressed: () => isLine = false, - selected: !isLine, - ), - button( - "MACD", - onPressed: () => _secondaryState = SecondaryState.MACD, - selected: _mainState == MainState.MA, - ), - button( - "KDJ", - onPressed: () => _secondaryState = SecondaryState.KDJ, - selected: _secondaryState == SecondaryState.KDJ, - ), - button( - "RSI", - onPressed: () => _secondaryState = SecondaryState.RSI, - selected: _secondaryState == SecondaryState.RSI, - ), - button( - "WR", - onPressed: () => _secondaryState = SecondaryState.WR, - selected: _secondaryState == SecondaryState.WR, - ), - button( - "NONE", - onPressed: () => _secondaryState = SecondaryState.NONE, - selected: _secondaryState == SecondaryState.NONE, - ), - button( - "MA", - onPressed: () => _mainState = MainState.MA, - selected: _mainState == MainState.MA, - ), + button("Candles", onPressed: () => isLine = !isLine, selected: !isLine), + button("MA", + onPressed: () => _mainState = + _mainState == MainState.MA ? MainState.NONE : MainState.MA, + selected: _mainState == MainState.MA), button( "BOLL", - onPressed: () => _mainState = MainState.BOLL, + onPressed: () => _mainState = + _mainState == MainState.BOLL ? MainState.NONE : MainState.BOLL, selected: _mainState == MainState.BOLL, ), - button( - "NONE", - onPressed: () => _mainState = MainState.NONE, - selected: _mainState == MainState.NONE, - ), - button("Time Mode", onPressed: () => isLine = true), - button("K Line Mode", onPressed: () => isLine = false), - button("Line:MA", onPressed: () => _mainState = MainState.MA), - button("Line:BOLL", onPressed: () => _mainState = MainState.BOLL), - button("Hide Line", onPressed: () => _mainState = MainState.NONE), - button("Secondary Chart:MACD", - onPressed: () => _secondaryState = SecondaryState.MACD), - button("Secondary Chart:KDJ", - onPressed: () => _secondaryState = SecondaryState.KDJ), - button("Secondary Chart:RSI", - onPressed: () => _secondaryState = SecondaryState.RSI), - button("Secondary Chart:WR", - onPressed: () => _secondaryState = SecondaryState.WR), - button("Secondary Chart:CCI", - onPressed: () => _secondaryState = SecondaryState.CCI), - button("Secondary Chart:Hide", - onPressed: () => _secondaryState = SecondaryState.NONE), - button(_volHidden ? "Show Vol" : "Hide Vol", - onPressed: () => _volHidden = !_volHidden), - button("Change Language", onPressed: () => isChinese = !isChinese), - button(_hideGrid ? "Show Grid" : "Hide Grid", - onPressed: () => _hideGrid = !_hideGrid), - button(_showNowPrice ? "Hide Now Price" : "Show Now Price", - onPressed: () => _showNowPrice = !_showNowPrice), - button("Customize UI", onPressed: () { - setState(() { - this.isChangeUI = !this.isChangeUI; - if (this.isChangeUI) { - chartColors.selectBorderColor = Colors.red; - chartColors.selectFillColor = Colors.red; - chartColors.lineFillColor = Colors.red; - chartColors.kLineColor = Colors.yellow; - } else { - chartColors.selectBorderColor = Color(0xff6C7A86); - chartColors.selectFillColor = Color(0xff0D1722); - chartColors.lineFillColor = Color(0x554C86CD); - chartColors.kLineColor = Color(0xff4C86CD); - } - }); - }), + button("Vol", + onPressed: () => _volHidden = !_volHidden, selected: !_volHidden), + button("Grid", + onPressed: () => _hideGrid = !_hideGrid, selected: !_hideGrid), + button("Price", + onPressed: () => _showNowPrice = !_showNowPrice, + selected: _showNowPrice), + button("MACD", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.MACD + ? SecondaryState.NONE + : SecondaryState.MACD, + selected: _secondaryState == SecondaryState.MACD), + button("KDJ", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.KDJ + ? SecondaryState.NONE + : SecondaryState.KDJ, + selected: _secondaryState == SecondaryState.KDJ), + button("RSI", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.RSI + ? SecondaryState.NONE + : SecondaryState.RSI, + selected: _secondaryState == SecondaryState.RSI), + button("WR", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.WR + ? SecondaryState.NONE + : SecondaryState.WR, + selected: _secondaryState == SecondaryState.WR), + button("CCI", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.CCI + ? SecondaryState.NONE + : SecondaryState.CCI, + selected: _secondaryState == SecondaryState.CCI), + // button("Customize UI", onPressed: () { + // setState(() { + // this.isChangeUI = !this.isChangeUI; + // if (this.isChangeUI) { + // chartColors.selectBorderColor = Colors.red; + // chartColors.selectFillColor = Colors.red; + // chartColors.lineFillColor = Colors.red; + // chartColors.kLineColor = Colors.yellow; + // } else { + // chartColors.selectBorderColor = Color(0xff6C7A86); + // chartColors.selectFillColor = Color(0xff0D1722); + // chartColors.lineFillColor = Color(0x554C86CD); + // chartColors.kLineColor = Color(0xff4C86CD); + // } + // }); + // }), button( "1m", onPressed: () => _durationController('1min'), @@ -319,7 +289,7 @@ class _ChartTabState extends State { selected: _currentDuration == '1day', ), button( - "?", + "⏱️", onPressed: _showRangePicker, selected: _currentDuration == '1day', ), @@ -358,12 +328,17 @@ class _ChartTabState extends State { } Future _showRangePicker() async { - final _response = await DateRangePicker.showDatePicker( + final _response = await showDateRangePicker( + initialEntryMode: DatePickerEntryMode.input, context: context, - initialFirstDate: DateTime.now().subtract(Duration(days: 365)), - initialLastDate: DateTime.now(), + initialDateRange: DateTimeRange( + start: DateTime.now().subtract( + Duration(days: 120), + ), + end: DateTime.now()), firstDate: DateTime.now().subtract(Duration(days: 3650)), lastDate: DateTime.now()); - _durationController('1day', from: _response[0], to: _response[1]); + if (_response == null) return; + _durationController('1day', from: _response.start, to: _response.end); } } diff --git a/triple_i_main_app/lib/screens/profile_tabs/technical_chart_screen.dart b/triple_i_main_app/lib/screens/profile_tabs/technical_chart_screen.dart index 1adc409..dc14e7a 100644 --- a/triple_i_main_app/lib/screens/profile_tabs/technical_chart_screen.dart +++ b/triple_i_main_app/lib/screens/profile_tabs/technical_chart_screen.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:date_range_picker/date_range_picker.dart' as DateRangePicker; +import 'package:main/repository/k_chart/chart_translations.dart'; import 'package:main/repository/k_chart/flutter_k_chart.dart'; import 'package:main/widgets/backgroundGrad.dart'; import 'package:main/widgets/loading_indicator.dart'; @@ -19,9 +19,15 @@ class TechnicalChartScreen extends StatefulWidget { } class _TechnicalChartScreenState extends State { - MainState _mainState = MainState.NONE; + MainState _mainState = MainState.MA; + ChartStyle chartStyle = ChartStyle(); + ChartColors chartColors = ChartColors(); + bool _hideGrid = false; + bool _showNowPrice = true; + bool isChangeUI = false; + bool _volHidden = false; - SecondaryState _secondaryState = SecondaryState.NONE; + SecondaryState _secondaryState = SecondaryState.MACD; bool isLine = false; bool _isLoading = true; @@ -73,7 +79,24 @@ class _TechnicalChartScreenState extends State { Row( children: [ buildDummyColumn(), - Expanded(child: Container() + Expanded( + child: KChartWidget( + widget.durationChart['${widget.currentDuration}'], + chartStyle, + chartColors, + isLine: isLine, + mainState: _mainState, + volHidden: _volHidden, + secondaryState: _secondaryState, + fixedLength: 2, + timeFormat: TimeFormat.YEAR_MONTH_DAY, + translations: kChartTranslations, + showNowPrice: _showNowPrice, + //`isChinese` is Deprecated, Use `translations` instead. + isChinese: false, + hideGrid: _hideGrid, + maDayList: [1, 100, 1000], + ) // KChartWidget( // widget.durationChart['${widget.currentDuration}'], // isLine: isLine, @@ -117,101 +140,108 @@ class _TechnicalChartScreenState extends State { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ + button("Candl", + onPressed: () => isLine = !isLine, selected: !isLine), + button("MA", + onPressed: () => _mainState = + _mainState == MainState.MA ? MainState.NONE : MainState.MA, + selected: _mainState == MainState.MA), button( - "Line", - onPressed: () => isLine = true, - selected: isLine, + "BOLL", + onPressed: () => _mainState = _mainState == MainState.BOLL + ? MainState.NONE + : MainState.BOLL, + selected: _mainState == MainState.BOLL, ), - button( - "Bars", - onPressed: () => isLine = false, - selected: !isLine, + button("Vol", + onPressed: () => _volHidden = !_volHidden, + selected: !_volHidden), + button("Grid", + onPressed: () => _hideGrid = !_hideGrid, selected: !_hideGrid), + button("Price", + onPressed: () => _showNowPrice = !_showNowPrice, + selected: _showNowPrice), + SizedBox( + height: 6, ), - Padding( - padding: EdgeInsets.only( - top: 6.0, - ), + button("MACD", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.MACD + ? SecondaryState.NONE + : SecondaryState.MACD, + selected: _secondaryState == SecondaryState.MACD), + button("KDJ", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.KDJ + ? SecondaryState.NONE + : SecondaryState.KDJ, + selected: _secondaryState == SecondaryState.KDJ), + button("RSI", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.RSI + ? SecondaryState.NONE + : SecondaryState.RSI, + selected: _secondaryState == SecondaryState.RSI), + button("WR", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.WR + ? SecondaryState.NONE + : SecondaryState.WR, + selected: _secondaryState == SecondaryState.WR), + button("CCI", + onPressed: () => _secondaryState = + _secondaryState == SecondaryState.CCI + ? SecondaryState.NONE + : SecondaryState.CCI, + selected: _secondaryState == SecondaryState.CCI), + SizedBox( + height: 6, ), + // button("Customize UI", onPressed: () { + // setState(() { + // this.isChangeUI = !this.isChangeUI; + // if (this.isChangeUI) { + // chartColors.selectBorderColor = Colors.red; + // chartColors.selectFillColor = Colors.red; + // chartColors.lineFillColor = Colors.red; + // chartColors.kLineColor = Colors.yellow; + // } else { + // chartColors.selectBorderColor = Color(0xff6C7A86); + // chartColors.selectFillColor = Color(0xff0D1722); + // chartColors.lineFillColor = Color(0x554C86CD); + // chartColors.kLineColor = Color(0xff4C86CD); + // } + // }); + // }), button( "1m", - onPressed: () => - widget.durationController('1min', nextScreen: true), + onPressed: () => widget.durationController('1min'), selected: widget.currentDuration == '1min', ), button( "5m", - onPressed: () => - widget.durationController('5min', nextScreen: true), + onPressed: () => widget.durationController('5min'), selected: widget.currentDuration == '5min', ), button( "30m", - onPressed: () => - widget.durationController('30min', nextScreen: true), + onPressed: () => widget.durationController('30min'), selected: widget.currentDuration == '30min', ), button( "1h", - onPressed: () => - widget.durationController('1hour', nextScreen: true), + onPressed: () => widget.durationController('1hour'), selected: widget.currentDuration == '1hour', ), button( "1D", - onPressed: () => - widget.durationController('1day', nextScreen: true), + onPressed: () => widget.durationController('1day'), selected: widget.currentDuration == '1day', ), button( - "?", + "⏱️", onPressed: _showRangePicker, - selected: widget.currentDuration == '1min', - ), - Padding(padding: EdgeInsets.only(top: 6)), - button( - "MACD", - onPressed: () => _secondaryState = SecondaryState.MACD, - selected: _mainState == MainState.MA, - ), - button( - "KDJ", - onPressed: () => _secondaryState = SecondaryState.KDJ, - selected: _secondaryState == SecondaryState.KDJ, - ), - button( - "RSI", - onPressed: () => _secondaryState = SecondaryState.RSI, - selected: _secondaryState == SecondaryState.RSI, - ), - button( - "WR", - onPressed: () => _secondaryState = SecondaryState.WR, - selected: _secondaryState == SecondaryState.WR, - ), - button( - "NONE", - onPressed: () => _secondaryState = SecondaryState.NONE, - selected: _secondaryState == SecondaryState.NONE, - ), - Padding( - padding: EdgeInsets.only( - top: 6.0, - ), - ), - button( - "MA", - onPressed: () => _mainState = MainState.MA, - selected: _mainState == MainState.MA, - ), - button( - "BOLL", - onPressed: () => _mainState = MainState.BOLL, - selected: _mainState == MainState.BOLL, - ), - button( - "NONE", - onPressed: () => _mainState = MainState.NONE, - selected: _mainState == MainState.NONE, + selected: widget.currentDuration == '1day', ), ], ), @@ -220,14 +250,17 @@ class _TechnicalChartScreenState extends State { } Future _showRangePicker() async { - final _response = await DateRangePicker.showDatePicker( + final _response = await showDateRangePicker( context: context, - initialFirstDate: DateTime.now().subtract(Duration(days: 365)), - initialLastDate: DateTime.now(), + initialEntryMode: DatePickerEntryMode.input, + initialDateRange: DateTimeRange( + start: DateTime.now().subtract(Duration(days: 120)), + end: DateTime.now()), firstDate: DateTime.now().subtract(Duration(days: 3650)), lastDate: DateTime.now()); + if (_response == null) return; widget.durationController('1day', - from: _response[0], to: _response[1], nextScreen: true); + from: _response.start, to: _response.end, nextScreen: true); } Widget button(String text, {VoidCallback? onPressed, bool selected = false}) { @@ -249,7 +282,9 @@ class _TechnicalChartScreenState extends State { ), style: ButtonStyle( backgroundColor: MaterialStateColor.resolveWith( - (states) => selected ? Colors.blue : Colors.blue.withOpacity(0.6), + (states) => selected + ? Color.fromRGBO(65, 190, 186, 1) + : Color.fromRGBO(65, 190, 186, 1).withOpacity(0.6), ), foregroundColor: MaterialStateColor.resolveWith((states) => Colors.black)), diff --git a/triple_i_main_app/lib/screens/tabs/news_tab.dart b/triple_i_main_app/lib/screens/tabs/news_tab.dart index a365b97..0ecd368 100644 --- a/triple_i_main_app/lib/screens/tabs/news_tab.dart +++ b/triple_i_main_app/lib/screens/tabs/news_tab.dart @@ -160,6 +160,7 @@ class NewsCardWidget extends StatelessWidget { final List news; NewsCardWidget({required this.title, required this.news}) + // ignore: unnecessary_null_comparison : assert(news != null); @override diff --git a/triple_i_main_app/pubspec.yaml b/triple_i_main_app/pubspec.yaml index 88c32a2..0490ba3 100644 --- a/triple_i_main_app/pubspec.yaml +++ b/triple_i_main_app/pubspec.yaml @@ -27,8 +27,7 @@ dependencies: bottom_navy_bar: ^6.0.0 cached_network_image: ^3.0.0 cloud_firestore: ^1.0.3 - data_connection_checker: ^0.3.4 - date_range_picker: ^1.0.7 + connectivity: ^3.0.6 dio: ^4.0.0 easy_localization: ^3.0.0 firebase_core: ^1.0.2