Skip to content
Snippets Groups Projects
Commit 085269e3 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '59-use-flutter-lints' into 'master'

Resolve "Use flutter lints"

Closes #59

See merge request !55
parents 5470bb72 552ad84f
No related branches found
No related tags found
1 merge request!55Resolve "Use flutter lints"
Pipeline #5023 passed
Showing
with 79 additions and 72 deletions
include: package:flutter_lints/flutter.yaml
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=1.0.45 app.versionName=1.0.46
app.versionCode=46 app.versionCode=47
...@@ -24,39 +24,39 @@ class MenuItem { ...@@ -24,39 +24,39 @@ class MenuItem {
class Menu { class Menu {
static List<MenuItem> items = [ static List<MenuItem> items = [
MenuItem( const MenuItem(
code: 'bottom_nav_sample', code: 'bottom_nav_sample',
icon: const Icon(UniconsLine.image), icon: Icon(UniconsLine.image),
page: DemoPage(), page: DemoPage(),
), ),
MenuItem( const MenuItem(
code: 'bottom_nav_api', code: 'bottom_nav_api',
icon: const Icon(UniconsLine.globe), icon: Icon(UniconsLine.globe),
page: ApiPage(), page: ApiPage(),
), ),
MenuItem( const MenuItem(
code: 'bottom_nav_camera', code: 'bottom_nav_camera',
icon: const Icon(UniconsLine.camera), icon: Icon(UniconsLine.camera),
page: CameraPage(), page: CameraPage(),
), ),
MenuItem( const MenuItem(
code: 'bottom_nav_chart', code: 'bottom_nav_chart',
icon: const Icon(UniconsLine.pen), icon: Icon(UniconsLine.pen),
page: GraphPage(), page: GraphPage(),
), ),
MenuItem( const MenuItem(
code: 'bottom_nav_game', code: 'bottom_nav_game',
icon: const Icon(UniconsLine.star), icon: Icon(UniconsLine.star),
page: GamePage(), page: GamePage(),
), ),
MenuItem( const MenuItem(
code: 'bottom_nav_settings', code: 'bottom_nav_settings',
icon: const Icon(UniconsLine.setting), icon: Icon(UniconsLine.setting),
page: SettingsPage(), page: SettingsPage(),
), ),
MenuItem( const MenuItem(
code: 'bottom_nav_about', code: 'bottom_nav_about',
icon: const Icon(UniconsLine.info_circle), icon: Icon(UniconsLine.info_circle),
page: AboutPage(), page: AboutPage(),
), ),
]; ];
......
...@@ -27,7 +27,7 @@ class ApiDataCubit extends HydratedCubit<ApiDataState> { ...@@ -27,7 +27,7 @@ class ApiDataCubit extends HydratedCubit<ApiDataState> {
} }
} }
} }
print('emit new state: ' + stateAsString); print('emit new state: $stateAsString');
emit(state); emit(state);
} }
......
...@@ -16,6 +16,7 @@ class ApiDataFetchInitial extends ApiDataState {} ...@@ -16,6 +16,7 @@ class ApiDataFetchInitial extends ApiDataState {}
class ApiDataFetchLoading extends ApiDataState {} class ApiDataFetchLoading extends ApiDataState {}
class ApiDataFetchLoaded extends ApiDataState { class ApiDataFetchLoaded extends ApiDataState {
@override
final ApiData data; final ApiData data;
const ApiDataFetchLoaded({ const ApiDataFetchLoaded({
......
...@@ -35,9 +35,9 @@ class SettingsCubit extends HydratedCubit<SettingsState> { ...@@ -35,9 +35,9 @@ class SettingsCubit extends HydratedCubit<SettingsState> {
InterfaceType? interfaceType, InterfaceType? interfaceType,
}) { }) {
emit(SettingsState( emit(SettingsState(
apiUrl: apiUrl != null ? apiUrl : state.apiUrl, apiUrl: apiUrl ?? state.apiUrl,
securityToken: securityToken != null ? securityToken : state.securityToken, securityToken: securityToken ?? state.securityToken,
interfaceType: interfaceType != null ? interfaceType : state.interfaceType, interfaceType: interfaceType ?? state.interfaceType,
)); ));
} }
......
...@@ -63,7 +63,7 @@ class MyApp extends StatelessWidget { ...@@ -63,7 +63,7 @@ class MyApp extends StatelessWidget {
child: MaterialApp( child: MaterialApp(
title: 'Random application', title: 'Random application',
theme: appTheme, theme: appTheme,
home: SkeletonScreen(), home: const SkeletonScreen(),
localizationsDelegates: context.localizationDelegates, localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales, supportedLocales: context.supportedLocales,
locale: context.locale, locale: context.locale,
......
...@@ -21,13 +21,14 @@ class ApiData { ...@@ -21,13 +21,14 @@ class ApiData {
Map<String, dynamic>? toJson() { Map<String, dynamic>? toJson() {
return <String, dynamic>{ return <String, dynamic>{
'number': this.number ?? 0, 'number': number ?? 0,
'md5': this.md5 ?? '', 'md5': md5 ?? '',
'updatedAt': this.updatedAt?.toString(), 'updatedAt': updatedAt?.toString(),
}; };
} }
@override
String toString() { String toString() {
return jsonEncode(this.toJson()); return jsonEncode(toJson());
} }
} }
...@@ -37,57 +37,58 @@ class Game { ...@@ -37,57 +37,58 @@ class Game {
} }
void stop() { void stop() {
this.isRunning = false; isRunning = false;
this.isFinished = true; isFinished = true;
} }
GameCell getCell(int x, int y) { GameCell getCell(int x, int y) {
return this.board.cells[y][x]; return board.cells[y][x];
} }
int? getCellValue(int x, int y) { int? getCellValue(int x, int y) {
return this.getCell(x, y).value; return getCell(x, y).value;
} }
void updateCellValue(int x, int y, int? value) { void updateCellValue(int x, int y, int? value) {
this.board.cells[y][x].value = value; board.cells[y][x].value = value;
} }
void setRandomCellValue(int x, int y, GameSettings settings) { void setRandomCellValue(int x, int y, GameSettings settings) {
final int maxValue = settings.colorsCount; final int maxValue = settings.colorsCount;
final rand = new Random(); final rand = Random();
int value = 1 + rand.nextInt(maxValue); int value = 1 + rand.nextInt(maxValue);
this.board.cells[y][x].value = value; board.cells[y][x].value = value;
} }
void increaseMovesCount() { void increaseMovesCount() {
this.movesCount += 1; movesCount += 1;
} }
void increaseScore(int? count) { void increaseScore(int? count) {
this.score += (count ?? 0); score += (count ?? 0);
} }
@override
String toString() { String toString() {
return 'Game(' + this.toJson().toString() + ')'; return 'Game(${toJson()})';
} }
Map<String, dynamic>? toJson() { Map<String, dynamic>? toJson() {
return <String, dynamic>{ return <String, dynamic>{
'board': this.board.toJson(), 'board': board.toJson(),
'settings': this.settings.toJson(), 'settings': settings.toJson(),
'isRunning': this.isRunning, 'isRunning': isRunning,
'isFinished': this.isFinished, 'isFinished': isFinished,
'availableBlocksCount': this.availableBlocksCount, 'availableBlocksCount': availableBlocksCount,
'movesCount': this.movesCount, 'movesCount': movesCount,
'score': this.score, 'score': score,
}; };
} }
void dump() { void dump() {
GameBoard.printGrid(this.board.cells); GameBoard.printGrid(board.cells);
print(this.settings.toJson()); print(settings.toJson());
print(this.toJson()); print(toJson());
} }
} }
...@@ -19,7 +19,7 @@ class GameBoard { ...@@ -19,7 +19,7 @@ class GameBoard {
final int boardSizeVertical = gameSettings.boardSize; final int boardSizeVertical = gameSettings.boardSize;
final int maxValue = gameSettings.colorsCount; final int maxValue = gameSettings.colorsCount;
final rand = new Random(); final rand = Random();
List<List<GameCell>> grid = []; List<List<GameCell>> grid = [];
for (var rowIndex = 0; rowIndex < boardSizeVertical; rowIndex++) { for (var rowIndex = 0; rowIndex < boardSizeVertical; rowIndex++) {
...@@ -49,13 +49,14 @@ class GameBoard { ...@@ -49,13 +49,14 @@ class GameBoard {
print(''); print('');
} }
@override
String toString() { String toString() {
return 'Board(' + this.toJson().toString() + ')'; return 'Board(${toJson()})';
} }
Map<String, dynamic>? toJson() { Map<String, dynamic>? toJson() {
return <String, dynamic>{ return <String, dynamic>{
'cells': this.cells.toString(), 'cells': cells.toString(),
}; };
} }
} }
...@@ -5,13 +5,14 @@ class GameCell { ...@@ -5,13 +5,14 @@ class GameCell {
this.value, this.value,
); );
@override
String toString() { String toString() {
return 'Cell(' + this.toJson().toString() + ')'; return 'Cell(${toJson()})';
} }
Map<String, dynamic>? toJson() { Map<String, dynamic>? toJson() {
return <String, dynamic>{ return <String, dynamic>{
'value': this.value, 'value': value,
}; };
} }
} }
...@@ -32,14 +32,15 @@ class GameSettings { ...@@ -32,14 +32,15 @@ class GameSettings {
); );
} }
@override
String toString() { String toString() {
return 'GameSettings(' + this.toJson().toString() + ')'; return 'GameSettings(${toJson()})';
} }
Map<String, dynamic>? toJson() { Map<String, dynamic>? toJson() {
return <String, dynamic>{ return <String, dynamic>{
'boardSize': this.boardSize, 'boardSize': boardSize,
'colorsCount': this.colorsCount, 'colorsCount': colorsCount,
}; };
} }
} }
...@@ -8,7 +8,7 @@ enum InterfaceType { ...@@ -8,7 +8,7 @@ enum InterfaceType {
class InterfaceTypes { class InterfaceTypes {
static List<Widget> selectWidgets = <Widget>[ static List<Widget> selectWidgets = <Widget>[
Text('interface_type_basic').tr(), const Text('interface_type_basic').tr(),
Text('interface_type_expert').tr(), const Text('interface_type_expert').tr(),
]; ];
} }
...@@ -10,10 +10,10 @@ class ApiService { ...@@ -10,10 +10,10 @@ class ApiService {
final String baseUrl = 'https://tools.harrault.fr/tools/api'; final String baseUrl = 'https://tools.harrault.fr/tools/api';
Future<Response?> getData() async { Future<Response?> getData() async {
String url = baseUrl + '/get.php'; String url = '$baseUrl/get.php';
try { try {
print('fetching api data... ' + url); print('fetching api data... $url');
final Response? response = await _dio.get(url); final Response response = await _dio.get(url);
print('ok got api response.'); print('ok got api response.');
print(response); print(response);
return response; return response;
......
...@@ -8,7 +8,7 @@ class ApiRepository { ...@@ -8,7 +8,7 @@ class ApiRepository {
Future<ApiData> getApiData() async { Future<ApiData> getApiData() async {
print('(getApiData) delayed API call...'); print('(getApiData) delayed API call...');
final response = await Future.delayed(Duration(milliseconds: 1000)) final response = await Future.delayed(const Duration(milliseconds: 1000))
.then((value) => apiService.getData()); .then((value) => apiService.getData());
if (response != null) { if (response != null) {
print('(getApiData) got api response'); print('(getApiData) got api response');
......
...@@ -30,7 +30,7 @@ class CellPainter extends CustomPainter { ...@@ -30,7 +30,7 @@ class CellPainter extends CustomPainter {
const borderWidth = 0.05; const borderWidth = 0.05;
final Rect baseSquare = Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height)); final Rect baseSquare = Rect.fromPoints(const Offset(0, 0), Offset(size.width, size.height));
final paintBaseSquare = Paint() final paintBaseSquare = Paint()
..style = PaintingStyle.fill ..style = PaintingStyle.fill
......
...@@ -35,14 +35,14 @@ class GraphPainter extends CustomPainter { ...@@ -35,14 +35,14 @@ class GraphPainter extends CustomPainter {
paintBackground.color = Colors.black; paintBackground.color = Colors.black;
paintBackground.style = PaintingStyle.fill; paintBackground.style = PaintingStyle.fill;
final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height)); final Rect rectBackground = Rect.fromPoints(const Offset(0, 0), Offset(size.width, size.height));
canvas.drawRect(rectBackground, paintBackground); canvas.drawRect(rectBackground, paintBackground);
// Draw some lines // Draw some lines
Paint paintLine = Paint(); Paint paintLine = Paint();
paintLine.style = PaintingStyle.fill; paintLine.style = PaintingStyle.fill;
for (int i = 0; i < this.linesCount; i++) { for (int i = 0; i < linesCount; i++) {
paintLine.color = getRandomColor(); paintLine.color = getRandomColor();
paintLine.strokeWidth = Random().nextDouble() * 4 + 2; paintLine.strokeWidth = Random().nextDouble() * 4 + 2;
......
...@@ -14,15 +14,15 @@ class AboutPage extends StatelessWidget { ...@@ -14,15 +14,15 @@ class AboutPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: <Widget>[ children: <Widget>[
SizedBox(height: 8), const SizedBox(height: 8),
AppHeader(text: 'about_title'), const AppHeader(text: 'about_title'),
Text('about_content').tr(), const Text('about_content').tr(),
FutureBuilder<PackageInfo>( FutureBuilder<PackageInfo>(
future: PackageInfo.fromPlatform(), future: PackageInfo.fromPlatform(),
builder: (context, snapshot) { builder: (context, snapshot) {
switch (snapshot.connectionState) { switch (snapshot.connectionState) {
case ConnectionState.done: case ConnectionState.done:
return Text('about_version').tr( return const Text('about_version').tr(
namedArgs: { namedArgs: {
'version': snapshot.data!.version, 'version': snapshot.data!.version,
}, },
......
...@@ -17,9 +17,9 @@ class ApiPage extends StatelessWidget { ...@@ -17,9 +17,9 @@ class ApiPage extends StatelessWidget {
padding: const EdgeInsets.symmetric(horizontal: 4), padding: const EdgeInsets.symmetric(horizontal: 4),
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
children: <Widget>[ children: <Widget>[
SizedBox(height: 8), const SizedBox(height: 8),
AppHeader(text: 'api_page_title'), const AppHeader(text: 'api_page_title'),
SizedBox(height: 20), const SizedBox(height: 20),
BlocBuilder<ApiDataCubit, ApiDataState>( BlocBuilder<ApiDataCubit, ApiDataState>(
builder: (BuildContext context, ApiDataState apiDataState) { builder: (BuildContext context, ApiDataState apiDataState) {
return ApiDataWidget( return ApiDataWidget(
......
...@@ -13,12 +13,12 @@ class CameraPage extends StatelessWidget { ...@@ -13,12 +13,12 @@ class CameraPage extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Material( return Material(
color: Theme.of(context).colorScheme.background, color: Theme.of(context).colorScheme.background,
child: Column( child: const Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
const SizedBox(height: 8), SizedBox(height: 8),
const TakePictureWidget(), TakePictureWidget(),
], ],
), ),
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment