diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..235cb73 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Flutter for web", + "type": "dart", + "request": "launch", + "program": "lib/main.dart", +// "args": [ +// "-d", +// "chrome" +// ] + } + ] +} \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml index 0d29021..6cf676f 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -7,7 +7,7 @@ # The following line activates a set of recommended lints for Flutter apps, # packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml +#include: package:flutter_lints/flutter.yaml linter: # The lint rules applied to this project can be customized in the diff --git a/lib/data/movies.dart b/lib/data/movies.dart index eaa0e55..9b2021a 100644 --- a/lib/data/movies.dart +++ b/lib/data/movies.dart @@ -1,8 +1,3 @@ -import 'package:intl/intl.dart'; - -import 'package:flutter/material.dart'; -import 'package:syncfusion_flutter_datagrid/datagrid.dart'; - class Movie { int movieID; String movieTitle; diff --git a/lib/data/tvshows.dart b/lib/data/tvshows.dart index 7e68182..5138191 100644 --- a/lib/data/tvshows.dart +++ b/lib/data/tvshows.dart @@ -1,10 +1,3 @@ -import 'dart:convert'; - -import 'package:intl/intl.dart'; - -import 'package:flutter/material.dart'; -import 'package:syncfusion_flutter_datagrid/datagrid.dart'; - class EpisodeCount { int season; int cnt; diff --git a/lib/log_printer.dart b/lib/log_printer.dart new file mode 100644 index 0000000..6a9fbc6 --- /dev/null +++ b/lib/log_printer.dart @@ -0,0 +1,64 @@ +import 'dart:convert'; + +import 'package:logger/logger.dart'; + +Logger getLogger() { +// Logger.level = Level.debug; + Logger.level = Level.info; + return Logger( + printer: MyLogPrinter( + printTime: true, + colors: true, + ), + ); +} + +class MyLogPrinter extends LogPrinter { + static final levelPrefixes = { + Level.trace: ' [TRACE]', + Level.debug: ' [DEBUG]', + Level.info: ' [INFO]', + Level.warning: '[WARNING]', + Level.error: ' [ERROR]', + Level.fatal: ' [FATAL]', + }; + + static final levelColors = { + Level.trace: AnsiColor.fg(AnsiColor.grey(0.5)), + Level.debug: const AnsiColor.none(), + Level.info: const AnsiColor.fg(12), + Level.warning: const AnsiColor.fg(208), + Level.error: const AnsiColor.fg(196), + Level.fatal: const AnsiColor.fg(199), + }; + + final bool printTime; + final bool colors; + + MyLogPrinter({this.printTime = false, this.colors = true}); + + @override + List log(LogEvent event) { + var messageStr = _stringifyMessage(event.message); + var errorStr = event.error != null ? ' ERROR: ${event.error}' : ''; + var timeStr = printTime ? event.time.toIso8601String() : ''; + return ['${_labelFor(event.level)} $timeStr $messageStr$errorStr']; + } + + String _labelFor(Level level) { + var prefix = levelPrefixes[level]!; + var color = levelColors[level]!; + + return colors ? color(prefix) : prefix; + } + + String _stringifyMessage(dynamic message) { + final finalMessage = message is Function ? message() : message; + if (finalMessage is Map || finalMessage is Iterable) { + var encoder = const JsonEncoder.withIndent(null); + return encoder.convert(finalMessage); + } else { + return finalMessage.toString(); + } + } +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index e2b5f1a..8720786 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,7 +2,10 @@ import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:google_fonts/google_fonts.dart'; -import 'package:multimedia/widgets/tabsScreen.dart'; +import 'package:multimedia/widgets/tabs_screen.dart'; + +import 'package:logger/logger.dart'; +import 'package:multimedia/log_printer.dart'; final theme = ThemeData( useMaterial3: true, @@ -14,11 +17,16 @@ final theme = ThemeData( ); void main() async { + Logger logger = getLogger(); + logger.i('Start application'); + WidgetsFlutterBinding.ensureInitialized(); + + logger.i('Load preferences'); SharedPreferences prefs = await SharedPreferences.getInstance(); - String? dbProtocol = prefs.getString('dbProtocol'); - String? dbHost = prefs.getString('dbHost'); +//LATER String? dbProtocol = prefs.getString('dbProtocol'); +//LATER String? dbHost = prefs.getString('dbHost'); String? dbPath = prefs.getString('dbPath'); String? dbUser = prefs.getString('dbUser'); String? dbPassword = prefs.getString('dbPassword'); @@ -47,6 +55,8 @@ void main() async { prefs.setString('dbPassword', ''); } + logger.i('Run application'); + runApp(const MyApp()); } diff --git a/lib/widgets/movies/details/castBox.dart b/lib/widgets/movies/details/cast_box.dart similarity index 100% rename from lib/widgets/movies/details/castBox.dart rename to lib/widgets/movies/details/cast_box.dart diff --git a/lib/widgets/movies/details/companiesBox.dart b/lib/widgets/movies/details/companies_box.dart similarity index 100% rename from lib/widgets/movies/details/companiesBox.dart rename to lib/widgets/movies/details/companies_box.dart diff --git a/lib/widgets/movies/details/countriesBox.dart b/lib/widgets/movies/details/countries_box.dart similarity index 100% rename from lib/widgets/movies/details/countriesBox.dart rename to lib/widgets/movies/details/countries_box.dart diff --git a/lib/widgets/movies/details/crewBox.dart b/lib/widgets/movies/details/crew_box.dart similarity index 100% rename from lib/widgets/movies/details/crewBox.dart rename to lib/widgets/movies/details/crew_box.dart diff --git a/lib/widgets/movies/details/detailsScreen.dart b/lib/widgets/movies/details/details_screen.dart similarity index 80% rename from lib/widgets/movies/details/detailsScreen.dart rename to lib/widgets/movies/details/details_screen.dart index 2f7cc97..65c2575 100644 --- a/lib/widgets/movies/details/detailsScreen.dart +++ b/lib/widgets/movies/details/details_screen.dart @@ -3,18 +3,17 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:http/http.dart' as http; -import 'package:transparent_image/transparent_image.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:multimedia/data/movies.dart'; -import 'package:multimedia/widgets/movies/details/castBox.dart'; -import 'package:multimedia/widgets/movies/details/crewBox.dart'; -import 'package:multimedia/widgets/movies/details/overviewBox.dart'; -import 'package:multimedia/widgets/movies/details/genreBox.dart'; -import 'package:multimedia/widgets/movies/details/companiesBox.dart'; -import 'package:multimedia/widgets/movies/details/countriesBox.dart'; -import 'package:multimedia/widgets/movies/details/settingsBox.dart'; +import 'package:multimedia/widgets/movies/details/cast_box.dart'; +import 'package:multimedia/widgets/movies/details/crew_box.dart'; +import 'package:multimedia/widgets/movies/details/overview_box.dart'; +import 'package:multimedia/widgets/movies/details/genre_box.dart'; +import 'package:multimedia/widgets/movies/details/companies_box.dart'; +import 'package:multimedia/widgets/movies/details/countries_box.dart'; +import 'package:multimedia/widgets/movies/details/settings_box.dart'; class MovieDetailsScreen extends StatelessWidget { MovieDetailsScreen({ @@ -44,23 +43,23 @@ class MovieDetailsScreen extends StatelessWidget { ); final response = await http.get(url); - bool? error; - String? errorMessage; +//LATER final bool? error; +//LATER String? errorMessage; Map movies = json.decode(response.body); - error = movies['error']; - errorMessage = movies['errmsg']; - var list = movies['data']; +//LATER error = movies['error']; +//LATER errorMessage = movies['errmsg']; + final list = movies['data']; - List _movies = + List moviesTmp = await list.map((json) => Movie.fromJson(json)).toList(); - if (_movies.isNotEmpty) { - movieDetails = _movies[0]; - return _movies[0]; + if (moviesTmp.isNotEmpty) { + movieDetails = moviesTmp[0]; + return moviesTmp[0]; } - return _movies[0]; + return moviesTmp[0]; } Widget generateLists(BuildContext context) { @@ -290,52 +289,52 @@ class MovieDetailsScreen extends StatelessWidget { } Future updateMovie() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); + // SharedPreferences prefs = await SharedPreferences.getInstance(); - String? dbProtocol = prefs.getString('dbProtocol'); - String? dbHost = prefs.getString('dbHost'); - String? dbPath = prefs.getString('dbPath'); + // String? dbProtocol = prefs.getString('dbProtocol'); + // String? dbHost = prefs.getString('dbHost'); + // String? dbPath = prefs.getString('dbPath'); - Uri url = Uri( - scheme: dbProtocol, - host: dbHost, - path: dbPath, - ); + // Uri url = Uri( + // scheme: dbProtocol, + // host: dbHost, + // path: dbPath, + // ); - try { - final r = await http.post( - url, - headers: { - 'Content-Type': 'application/json; charset=UTF-8', - }, - body: jsonEncode( - { - 'module': 'movie', - 'function': 'update', - 'movieID': movieDetails.movieID.toString(), - 'movieTitle': movieDetails.movieTitle, - 'originalTitle': movieDetails.originalTitle, - 'overview': movieDetails.overview, - 'releaseDate': - DateFormat('yyyy-MM-dd').format(movieDetails.releaseDate), - 'resolution': movieDetails.resolution, - 'state': movieDetails.state.toString(), - 'backdropPath': movieDetails.backdropPath, - 'languages': movieDetails.languages, - 'productionCountries': movieDetails.productionCountries, - 'productionCompanies': movieDetails.productionCompanies, - 'voteAverage': movieDetails.voteAverage.toString(), - 'voteCount': movieDetails.voteCount.toString(), - 'cast': movieDetails.cast, - 'crew': movieDetails.crew, - 'genre': movieDetails.genre, - 'localPath': movieDetails.localPath, - }, - ), - ); - } catch (e) { - print(e.toString()); - } + // try { + // final r = await http.post( + // url, + // headers: { + // 'Content-Type': 'application/json; charset=UTF-8', + // }, + // body: jsonEncode( + // { + // 'module': 'movie', + // 'function': 'update', + // 'movieID': movieDetails.movieID.toString(), + // 'movieTitle': movieDetails.movieTitle, + // 'originalTitle': movieDetails.originalTitle, + // 'overview': movieDetails.overview, + // 'releaseDate': + // DateFormat('yyyy-MM-dd').format(movieDetails.releaseDate), + // 'resolution': movieDetails.resolution, + // 'state': movieDetails.state.toString(), + // 'backdropPath': movieDetails.backdropPath, + // 'languages': movieDetails.languages, + // 'productionCountries': movieDetails.productionCountries, + // 'productionCompanies': movieDetails.productionCompanies, + // 'voteAverage': movieDetails.voteAverage.toString(), + // 'voteCount': movieDetails.voteCount.toString(), + // 'cast': movieDetails.cast, + // 'crew': movieDetails.crew, + // 'genre': movieDetails.genre, + // 'localPath': movieDetails.localPath, + // }, + // ), + // ); + // } catch (e) { + // print(e.toString()); + // } return true; } diff --git a/lib/widgets/movies/details/genreBox.dart b/lib/widgets/movies/details/genre_box.dart similarity index 100% rename from lib/widgets/movies/details/genreBox.dart rename to lib/widgets/movies/details/genre_box.dart diff --git a/lib/widgets/movies/details/overviewBox.dart b/lib/widgets/movies/details/overview_box.dart similarity index 100% rename from lib/widgets/movies/details/overviewBox.dart rename to lib/widgets/movies/details/overview_box.dart diff --git a/lib/widgets/movies/details/settingsBox.dart b/lib/widgets/movies/details/settings_box.dart similarity index 94% rename from lib/widgets/movies/details/settingsBox.dart rename to lib/widgets/movies/details/settings_box.dart index 9c6a5e4..c728acc 100644 --- a/lib/widgets/movies/details/settingsBox.dart +++ b/lib/widgets/movies/details/settings_box.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:multimedia/constants.dart'; -import 'package:multimedia/widgets/movies/details/settingsBoxLocalPath.dart'; -import 'package:multimedia/widgets/movies/details/settingsBoxResolution.dart'; -import 'package:multimedia/widgets/movies/details/stateBox.dart'; +import 'package:multimedia/widgets/movies/details/settings_box_local_path.dart'; +import 'package:multimedia/widgets/movies/details/settings_box_resolution.dart'; +import 'package:multimedia/widgets/movies/details/state_box.dart'; class MovieDetailsSettingsBox extends StatelessWidget { MovieDetailsSettingsBox({ diff --git a/lib/widgets/movies/details/settingsBoxLocalPath.dart b/lib/widgets/movies/details/settings_box_local_path.dart similarity index 93% rename from lib/widgets/movies/details/settingsBoxLocalPath.dart rename to lib/widgets/movies/details/settings_box_local_path.dart index 9c02907..2fb0f8b 100644 --- a/lib/widgets/movies/details/settingsBoxLocalPath.dart +++ b/lib/widgets/movies/details/settings_box_local_path.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; class MovieDetailsSettingsBoxLocalPath extends StatelessWidget { - MovieDetailsSettingsBoxLocalPath({ + const MovieDetailsSettingsBoxLocalPath({ super.key, required this.localPath, required this.localPathChanged, }); - String localPath; + final String localPath; final Function(String localPath) localPathChanged; diff --git a/lib/widgets/movies/details/settingsBoxResolution.dart b/lib/widgets/movies/details/settings_box_resolution.dart similarity index 96% rename from lib/widgets/movies/details/settingsBoxResolution.dart rename to lib/widgets/movies/details/settings_box_resolution.dart index f03b0a9..1f36e1d 100644 --- a/lib/widgets/movies/details/settingsBoxResolution.dart +++ b/lib/widgets/movies/details/settings_box_resolution.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; class MovieDetailsSettingsBoxResolution extends StatefulWidget { - MovieDetailsSettingsBoxResolution({ + const MovieDetailsSettingsBoxResolution({ super.key, required this.resolution, required this.resolutionChanged, }); - String resolution; + final String resolution; final Function(String resolution) resolutionChanged; diff --git a/lib/widgets/movies/details/stateBox.dart b/lib/widgets/movies/details/state_box.dart similarity index 94% rename from lib/widgets/movies/details/stateBox.dart rename to lib/widgets/movies/details/state_box.dart index 29cdb9a..514814c 100644 --- a/lib/widgets/movies/details/stateBox.dart +++ b/lib/widgets/movies/details/state_box.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:multimedia/constants.dart'; - class MovieDetailsSettingsStateBox extends StatefulWidget { MovieDetailsSettingsStateBox({ super.key, @@ -52,7 +50,7 @@ class _MovieDetailsSettingsStateBoxState SizedBox( width: 180, child: CheckboxListTile( - side: MaterialStateBorderSide.resolveWith( + side: WidgetStateBorderSide.resolveWith( (states) => const BorderSide(width: 1.0, color: Colors.grey), ), @@ -75,7 +73,7 @@ class _MovieDetailsSettingsStateBoxState SizedBox( width: 180, child: CheckboxListTile( - side: MaterialStateBorderSide.resolveWith( + side: WidgetStateBorderSide.resolveWith( (states) => const BorderSide(width: 1.0, color: Colors.grey), ), @@ -98,7 +96,7 @@ class _MovieDetailsSettingsStateBoxState SizedBox( width: 130, child: CheckboxListTile( - side: MaterialStateBorderSide.resolveWith( + side: WidgetStateBorderSide.resolveWith( (states) => const BorderSide(width: 1.0, color: Colors.grey), ), diff --git a/lib/widgets/movies/listScreen.dart b/lib/widgets/movies/list_screen.dart similarity index 96% rename from lib/widgets/movies/listScreen.dart rename to lib/widgets/movies/list_screen.dart index 4913a84..7963da4 100644 --- a/lib/widgets/movies/listScreen.dart +++ b/lib/widgets/movies/list_screen.dart @@ -1,5 +1,5 @@ import 'dart:convert'; -import 'package:multimedia/widgets/movies/details/detailsScreen.dart'; +import 'package:multimedia/widgets/movies/details/details_screen.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:intl/intl.dart'; @@ -47,21 +47,21 @@ class _MoviesScreenState extends State { try { final response = await http.get(url); - bool? error; - String? errorMessage; +//LATER bool? error; +//LATER String? errorMessage; Map movies = json.decode(response.body); - error = movies['error']; - errorMessage = movies['errmsg']; +//LATER error = movies['error']; +//LATER errorMessage = movies['errmsg']; var list = movies['data']; - List _movies = + List moviesTmp = await list.map((json) => Movie.fromJson(json)).toList(); - movieDataSource = MovieDataSource(_movies); + movieDataSource = MovieDataSource(moviesTmp); - _moviesList = _movies; + _moviesList = moviesTmp; - return _movies; + return moviesTmp; } catch (e) { print(e.toString()); } diff --git a/lib/widgets/tabsScreen.dart b/lib/widgets/tabs_screen.dart similarity index 90% rename from lib/widgets/tabsScreen.dart rename to lib/widgets/tabs_screen.dart index b3fa2e5..a9569b8 100644 --- a/lib/widgets/tabsScreen.dart +++ b/lib/widgets/tabs_screen.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:multimedia/widgets/tvshows/listScreen.dart'; -import 'package:multimedia/widgets/movies/listScreen.dart'; +import 'package:multimedia/widgets/tvshows/list_screen.dart'; +import 'package:multimedia/widgets/movies/list_screen.dart'; class TabsScreen extends StatefulWidget { const TabsScreen({super.key}); diff --git a/lib/widgets/tvshows/details/castBox.dart b/lib/widgets/tvshows/details/cast_box.dart similarity index 100% rename from lib/widgets/tvshows/details/castBox.dart rename to lib/widgets/tvshows/details/cast_box.dart diff --git a/lib/widgets/tvshows/details/companiesBox.dart b/lib/widgets/tvshows/details/companies_box.dart similarity index 100% rename from lib/widgets/tvshows/details/companiesBox.dart rename to lib/widgets/tvshows/details/companies_box.dart diff --git a/lib/widgets/tvshows/details/countriesBox.dart b/lib/widgets/tvshows/details/countries_box.dart similarity index 100% rename from lib/widgets/tvshows/details/countriesBox.dart rename to lib/widgets/tvshows/details/countries_box.dart diff --git a/lib/widgets/tvshows/details/crewBox.dart b/lib/widgets/tvshows/details/crew_box.dart similarity index 100% rename from lib/widgets/tvshows/details/crewBox.dart rename to lib/widgets/tvshows/details/crew_box.dart diff --git a/lib/widgets/tvshows/details/detailsScreen.dart b/lib/widgets/tvshows/details/details_screen.dart similarity index 81% rename from lib/widgets/tvshows/details/detailsScreen.dart rename to lib/widgets/tvshows/details/details_screen.dart index 7affa1f..a24def7 100644 --- a/lib/widgets/tvshows/details/detailsScreen.dart +++ b/lib/widgets/tvshows/details/details_screen.dart @@ -1,21 +1,23 @@ import 'dart:convert'; import 'package:flutter/material.dart'; -import 'package:intl/intl.dart'; import 'package:http/http.dart' as http; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:multimedia/widgets/tvshows/details/companiesBox.dart'; -import 'package:multimedia/widgets/tvshows/details/countriesBox.dart'; -import 'package:multimedia/widgets/tvshows/details/crewBox.dart'; -import 'package:multimedia/widgets/tvshows/details/castBox.dart'; -import 'package:multimedia/widgets/tvshows/details/genreBox.dart'; -import 'package:multimedia/widgets/tvshows/details/overviewBox.dart'; +import 'package:multimedia/widgets/tvshows/details/companies_box.dart'; +import 'package:multimedia/widgets/tvshows/details/countries_box.dart'; +import 'package:multimedia/widgets/tvshows/details/crew_box.dart'; +import 'package:multimedia/widgets/tvshows/details/cast_box.dart'; +import 'package:multimedia/widgets/tvshows/details/genre_box.dart'; +import 'package:multimedia/widgets/tvshows/details/overview_box.dart'; import 'package:multimedia/widgets/tvshows/details/seasons.dart'; -import 'package:multimedia/widgets/tvshows/details/settingsBox.dart'; +import 'package:multimedia/widgets/tvshows/details/settings_box.dart'; import 'package:multimedia/data/tvshows.dart'; +import 'package:logger/logger.dart'; +import 'package:multimedia/log_printer.dart'; + class TVShowDetailsScreen extends StatelessWidget { TVShowDetailsScreen({ super.key, @@ -26,6 +28,7 @@ class TVShowDetailsScreen extends StatelessWidget { late int maxSeason; late List episodeCount; late TVShow tvShowDetails; + Logger logger = getLogger(); Future testPost(String data) async { SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -76,38 +79,38 @@ class TVShowDetailsScreen extends StatelessWidget { ); final response = await http.get(url); - bool? error; - String? errorMessage; +//LATER bool? error; +//LATER String? errorMessage; String? mSeason; Map tvshows = json.decode(response.body); - error = tvshows['error']; - errorMessage = tvshows['errmsg']; +//LATER error = tvshows['error']; +//LATER errorMessage = tvshows['errmsg']; mSeason = tvshows['maxSeason']; var tvshowList = tvshows['tvshows']; var episodeList = tvshows['episodeCount']; if (mSeason != null) { - if (int.tryParse(mSeason!) != null) { + if (int.tryParse(mSeason) != null) { maxSeason = int.parse(mSeason); } } - List _tvshows = + List tvshowsTmp = await tvshowList.map((json) => TVShow.fromJson(json)).toList(); - List _episodecount = await episodeList + List episodecountTmp = await episodeList .map((json) => EpisodeCount.fromJson(json)) .toList(); - episodeCount = _episodecount; + episodeCount = episodecountTmp; - if (_tvshows.isNotEmpty) { - tvShowDetails = _tvshows[0]; + if (tvshowsTmp.isNotEmpty) { + tvShowDetails = tvshowsTmp[0]; } - return _tvshows[0]; + return tvshowsTmp[0]; } Widget generateLists(BuildContext context) { @@ -337,57 +340,57 @@ class TVShowDetailsScreen extends StatelessWidget { } Future updateTVShow() async { - SharedPreferences prefs = await SharedPreferences.getInstance(); + // SharedPreferences prefs = await SharedPreferences.getInstance(); - String? dbProtocol = prefs.getString('dbProtocol'); - String? dbHost = prefs.getString('dbHost'); - String? dbPath = prefs.getString('dbPath'); + // String? dbProtocol = prefs.getString('dbProtocol'); + // String? dbHost = prefs.getString('dbHost'); + // String? dbPath = prefs.getString('dbPath'); - Uri url = Uri( - scheme: dbProtocol, - host: dbHost, - path: dbPath, - ); + // Uri url = Uri( + // scheme: dbProtocol, + // host: dbHost, + // path: dbPath, + // ); - var seasonState = jsonEncode(tvShowDetails.seasonStatus.map((e) => e.toJson()).toList()); + // var seasonState = jsonEncode(tvShowDetails.seasonStatus.map((e) => e.toJson()).toList()); - try { - final r = await http.post( - url, - headers: { - 'Content-Type': 'application/json; charset=UTF-8', - }, - body: jsonEncode( - { - 'module': 'tvshow', - 'function': 'update', - 'seriesID': tvShowDetails.seriesID.toString(), - 'seriesName': tvShowDetails.seriesName, - 'overview': tvShowDetails.overview, - 'firstAired': - DateFormat('yyyy-MM-dd').format(tvShowDetails.firstAired), - 'resolution': tvShowDetails.resolution, - 'cliffhanger': tvShowDetails.cliffhanger.toString(), - 'status': tvShowDetails.status.toString(), - 'backdropPath': tvShowDetails.backdropPath, - 'seriesState': tvShowDetails.seriesState.toString(), - 'languages': tvShowDetails.languages, - 'networks': tvShowDetails.networks, - 'productionCompanies': tvShowDetails.productionCompanies, - 'voteAverage': tvShowDetails.voteAverage.toString(), - 'voteCount': tvShowDetails.voteCount.toString(), - 'cast': tvShowDetails.cast, - 'crew': tvShowDetails.crew, - 'genre': tvShowDetails.genre, - 'download': tvShowDetails.download, - 'localPath': tvShowDetails.localPath, - 'seasons': seasonState, - }, - ), - ); - } catch (e) { - print(e.toString()); - } + // try { + // final r = await http.post( + // url, + // headers: { + // 'Content-Type': 'application/json; charset=UTF-8', + // }, + // body: jsonEncode( + // { + // 'module': 'tvshow', + // 'function': 'update', + // 'seriesID': tvShowDetails.seriesID.toString(), + // 'seriesName': tvShowDetails.seriesName, + // 'overview': tvShowDetails.overview, + // 'firstAired': + // DateFormat('yyyy-MM-dd').format(tvShowDetails.firstAired), + // 'resolution': tvShowDetails.resolution, + // 'cliffhanger': tvShowDetails.cliffhanger.toString(), + // 'status': tvShowDetails.status.toString(), + // 'backdropPath': tvShowDetails.backdropPath, + // 'seriesState': tvShowDetails.seriesState.toString(), + // 'languages': tvShowDetails.languages, + // 'networks': tvShowDetails.networks, + // 'productionCompanies': tvShowDetails.productionCompanies, + // 'voteAverage': tvShowDetails.voteAverage.toString(), + // 'voteCount': tvShowDetails.voteCount.toString(), + // 'cast': tvShowDetails.cast, + // 'crew': tvShowDetails.crew, + // 'genre': tvShowDetails.genre, + // 'download': tvShowDetails.download, + // 'localPath': tvShowDetails.localPath, + // 'seasons': seasonState, + // }, + // ), + // ); + // } catch (e) { + // logger.e(e.toString()); + // } return true; } @@ -545,7 +548,6 @@ class TVShowDetailsScreen extends StatelessWidget { ), ), ]); - ; } else { return const Center( child: CircularProgressIndicator( diff --git a/lib/widgets/tvshows/details/genreBox.dart b/lib/widgets/tvshows/details/genre_box.dart similarity index 100% rename from lib/widgets/tvshows/details/genreBox.dart rename to lib/widgets/tvshows/details/genre_box.dart diff --git a/lib/widgets/tvshows/details/overviewBox.dart b/lib/widgets/tvshows/details/overview_box.dart similarity index 100% rename from lib/widgets/tvshows/details/overviewBox.dart rename to lib/widgets/tvshows/details/overview_box.dart diff --git a/lib/widgets/tvshows/details/seasonBox.dart b/lib/widgets/tvshows/details/season_box.dart similarity index 97% rename from lib/widgets/tvshows/details/seasonBox.dart rename to lib/widgets/tvshows/details/season_box.dart index 28dcba4..309134e 100644 --- a/lib/widgets/tvshows/details/seasonBox.dart +++ b/lib/widgets/tvshows/details/season_box.dart @@ -100,7 +100,7 @@ class _TVShowDetailsSeasonBoxState extends State { Map colWidths = {}; for (int i = 0; i <= maxEpisode; i++) { - colWidths.addEntries({i: IntrinsicColumnWidth()}.entries); + colWidths.addEntries({i: const IntrinsicColumnWidth()}.entries); } return Container( @@ -194,7 +194,7 @@ class _TVShowDetailsSeasonBoxState extends State { for (var s in stateList) TableCell( child: Checkbox( - side: MaterialStateBorderSide.resolveWith( + side: WidgetStateBorderSide.resolveWith( (states) => const BorderSide( width: 1.0, color: Colors.grey), ), @@ -239,7 +239,7 @@ class _TVShowDetailsSeasonBoxState extends State { for (var s in stateList) TableCell( child: Checkbox( - side: MaterialStateBorderSide.resolveWith( + side: WidgetStateBorderSide.resolveWith( (states) => const BorderSide( width: 1.0, color: Colors.grey), ), @@ -284,7 +284,7 @@ class _TVShowDetailsSeasonBoxState extends State { for (var s in stateList) TableCell( child: Checkbox( - side: MaterialStateBorderSide.resolveWith( + side: WidgetStateBorderSide.resolveWith( (states) => const BorderSide( width: 1.0, color: Colors.grey), ), diff --git a/lib/widgets/tvshows/details/seasons.dart b/lib/widgets/tvshows/details/seasons.dart index 5d84563..9aaa512 100644 --- a/lib/widgets/tvshows/details/seasons.dart +++ b/lib/widgets/tvshows/details/seasons.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:multimedia/widgets/tvshows/details/seasonBox.dart'; +import 'package:multimedia/widgets/tvshows/details/season_box.dart'; -import 'package:multimedia/constants.dart'; import 'package:multimedia/data/tvshows.dart'; class TVShowDetailsSeasons extends StatefulWidget { diff --git a/lib/widgets/tvshows/details/settingsBox.dart b/lib/widgets/tvshows/details/settings_box.dart similarity index 93% rename from lib/widgets/tvshows/details/settingsBox.dart rename to lib/widgets/tvshows/details/settings_box.dart index 3915364..7f98180 100644 --- a/lib/widgets/tvshows/details/settingsBox.dart +++ b/lib/widgets/tvshows/details/settings_box.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:multimedia/constants.dart'; -import 'package:multimedia/widgets/tvshows/details/settingsBoxDownloadLink.dart'; -import 'package:multimedia/widgets/tvshows/details/settingsBoxLocalPath.dart'; -import 'package:multimedia/widgets/tvshows/details/settingsBoxResolution.dart'; -import 'package:multimedia/widgets/tvshows/details/settingsBoxCliffhanger.dart'; +import 'package:multimedia/widgets/tvshows/details/settings_box_download_link.dart'; +import 'package:multimedia/widgets/tvshows/details/settings_box_local_path.dart'; +import 'package:multimedia/widgets/tvshows/details/settings_box_resolution.dart'; +import 'package:multimedia/widgets/tvshows/details/settings_box_cliffhanger.dart'; class TVShowDetailsSettingsBox extends StatelessWidget { TVShowDetailsSettingsBox({ diff --git a/lib/widgets/tvshows/details/settingsBoxCliffhanger.dart b/lib/widgets/tvshows/details/settings_box_cliffhanger.dart similarity index 92% rename from lib/widgets/tvshows/details/settingsBoxCliffhanger.dart rename to lib/widgets/tvshows/details/settings_box_cliffhanger.dart index fe48b86..812a758 100644 --- a/lib/widgets/tvshows/details/settingsBoxCliffhanger.dart +++ b/lib/widgets/tvshows/details/settings_box_cliffhanger.dart @@ -47,8 +47,8 @@ class _TVShowDetailsSettingsBoxCliffhangerState height: 10, ), Checkbox( - side: MaterialStateBorderSide.resolveWith( - (states) => BorderSide(width: 1.0, color: Colors.grey), + side: WidgetStateBorderSide.resolveWith( + (states) => const BorderSide(width: 1.0, color: Colors.grey), ), value: (_curCliffhanger == 1), onChanged: (bool? value) { diff --git a/lib/widgets/tvshows/details/settingsBoxDownloadLink.dart b/lib/widgets/tvshows/details/settings_box_download_link.dart similarity index 100% rename from lib/widgets/tvshows/details/settingsBoxDownloadLink.dart rename to lib/widgets/tvshows/details/settings_box_download_link.dart diff --git a/lib/widgets/tvshows/details/settingsBoxLocalPath.dart b/lib/widgets/tvshows/details/settings_box_local_path.dart similarity index 100% rename from lib/widgets/tvshows/details/settingsBoxLocalPath.dart rename to lib/widgets/tvshows/details/settings_box_local_path.dart diff --git a/lib/widgets/tvshows/details/settingsBoxResolution.dart b/lib/widgets/tvshows/details/settings_box_resolution.dart similarity index 100% rename from lib/widgets/tvshows/details/settingsBoxResolution.dart rename to lib/widgets/tvshows/details/settings_box_resolution.dart diff --git a/lib/widgets/tvshows/listScreen.dart b/lib/widgets/tvshows/list_screen.dart similarity index 96% rename from lib/widgets/tvshows/listScreen.dart rename to lib/widgets/tvshows/list_screen.dart index b193aa2..a885daa 100644 --- a/lib/widgets/tvshows/listScreen.dart +++ b/lib/widgets/tvshows/list_screen.dart @@ -1,7 +1,5 @@ -import 'dart:ui' as ui; - import 'dart:convert'; -import 'package:multimedia/widgets/tvshows/details/detailsScreen.dart'; +import 'package:multimedia/widgets/tvshows/details/details_screen.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:intl/intl.dart'; @@ -15,7 +13,6 @@ import 'package:multimedia/data/tvshows.dart'; import 'package:multimedia/constants.dart'; - String convertState(String state) { List stateList = state.split(','); int maxEpisode = 0; @@ -104,34 +101,34 @@ class _TVShowsScreenState extends State { try { final response = await http.get(url); - bool? error; - String? errorMessage; +//LATER bool? error; +//LATER String? errorMessage; String? mSeason; Map tvshows = json.decode(response.body); - error = tvshows['error']; - errorMessage = tvshows['errmsg']; +//LATER error = tvshows['error']; +//LATER errorMessage = tvshows['errmsg']; mSeason = tvshows['maxSeason']; var tvshowList = tvshows['tvshows']; var episodeList = tvshows['episodeCount']; if (mSeason != null) { - if (int.tryParse(mSeason!) != null) { + if (int.tryParse(mSeason) != null) { maxSeason = int.parse(mSeason); } } - List _tvshows = await tvshowList + List tvshowsTmp = await tvshowList .map((json) => TVShow.fromJson(json)) .toList(); - tvshowDataSource = TVShowDataSource(_tvshows, maxSeason); + tvshowDataSource = TVShowDataSource(tvshowsTmp, maxSeason); - List _episodecount = await episodeList + List episodecountTmp = await episodeList .map((json) => EpisodeCount.fromJson(json)) .toList(); - episodeCount = _episodecount; + episodeCount = episodecountTmp; if (initDone == false) { addSeasonColumns(maxSeason); @@ -139,9 +136,9 @@ class _TVShowsScreenState extends State { initDone = true; - _tvshowsList = _tvshows; + _tvshowsList = tvshowsTmp; - return _tvshows; + return tvshowsTmp; } catch (e) { print(e.toString()); } diff --git a/pubspec.lock b/pubspec.lock index b20f155..cf21ea3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -45,18 +45,18 @@ packages: dependency: transitive description: name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.3" + version: "3.0.6" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 url: "https://pub.dev" source: hosted - version: "1.0.6" + version: "1.0.8" fake_async: dependency: transitive description: @@ -69,18 +69,18 @@ packages: dependency: transitive description: name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.3" file: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" flutter: dependency: "direct main" description: flutter @@ -90,10 +90,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "5.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -116,10 +116,10 @@ packages: dependency: "direct main" description: name: http - sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" + sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" http_parser: dependency: transitive description: @@ -140,34 +140,42 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.5" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.5" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: name: lints - sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "5.0.0" + logger: + dependency: "direct main" + description: + name: logger + sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32" + url: "https://pub.dev" + source: hosted + version: "2.4.0" matcher: dependency: transitive description: @@ -180,18 +188,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.15.0" path: dependency: transitive description: @@ -204,26 +212,26 @@ packages: dependency: transitive description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.5" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "51f0d2c554cfbc9d6a312ab35152fc77e2f0b758ce9f1a444a3a1e5b8f3c6b7f" + sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.2.12" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" + sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16 url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" path_provider_linux: dependency: transitive description: @@ -244,18 +252,18 @@ packages: dependency: transitive description: name: path_provider_windows - sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.0" platform: dependency: transitive description: name: platform - sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.6" plugin_platform_interface: dependency: transitive description: @@ -268,58 +276,58 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + sha256: "95f9997ca1fb9799d494d0cb2a780fd7be075818d59f00c43832ed112b158a82" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" + sha256: "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab" url: "https://pub.dev" source: hosted - version: "2.2.1" + version: "2.3.3" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" + sha256: "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d" url: "https://pub.dev" source: hosted - version: "2.3.5" + version: "2.5.3" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.1" sky_engine: dependency: transitive description: flutter @@ -361,18 +369,18 @@ packages: dependency: "direct main" description: name: syncfusion_flutter_core - sha256: "159b125f55d95534c0c39a5efd644f50a310821191946e15eac50a49032fb42c" + sha256: "31d2ddf410ee41abb3ecf85b7b6e8e1563307ad52ee784ddd91337e30280f715" url: "https://pub.dev" source: hosted - version: "25.1.39" + version: "27.1.58" syncfusion_flutter_datagrid: dependency: "direct main" description: name: syncfusion_flutter_datagrid - sha256: "5b31219c6acf4f65d71955476966288c03d5c8ea9c2842d938860c683181360f" + sha256: e7ddbb1bbadbb671e5fd636cadcde2ae06d9eec294c24937859f3c77ed1d1cbe url: "https://pub.dev" source: hosted - version: "25.1.39" + version: "27.1.58" term_glyph: dependency: transitive description: @@ -385,10 +393,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.2" transparent_image: dependency: "direct main" description: @@ -401,10 +409,10 @@ packages: dependency: transitive description: name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.4.0" vector_math: dependency: transitive description: @@ -417,34 +425,26 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.5" web: dependency: transitive description: name: web - sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" + sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb url: "https://pub.dev" source: hosted - version: "0.5.1" - win32: - dependency: transitive - description: - name: win32 - sha256: "0a989dc7ca2bb51eac91e8fd00851297cfffd641aa7538b165c62637ca0eaa4a" - url: "https://pub.dev" - source: hosted - version: "5.4.0" + version: "1.1.0" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" sdks: - dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.2" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/pubspec.yaml b/pubspec.yaml index a86d5a2..f835490 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,12 +36,14 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 http: ^1.2.0 - syncfusion_flutter_datagrid: ^25.1.37 + syncfusion_flutter_datagrid: ^27.1.58 intl: ^0.19.0 - syncfusion_flutter_core: ^25.1.37 + syncfusion_flutter_core: ^27.1.58 google_fonts: ^6.2.1 - shared_preferences: ^2.2.2 + shared_preferences: ^2.3.3 transparent_image: ^2.0.1 + logger: ^2.4.0 + dev_dependencies: flutter_test: @@ -52,7 +54,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^3.0.2 + flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec