new pages profil, analysis

pull/5/head
Lucas Delanier 2 years ago
parent eac7b475c5
commit bee557d88c

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 32 KiB

@ -1,12 +1,46 @@
import 'package:bowl_in/views/game_screen.dart';
import 'package:bowl_in/views/main_screen.dart';
import 'package:bowl_in/views/rank_screen.dart';
import 'package:bowl_in/views/welcome_screen.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:go_router/go_router.dart';
void main() {
runApp(const MyApp());
}
final GoRouter _router = GoRouter(
routes: <RouteBase>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
return const MainScreen();
},
routes: <RouteBase>[
GoRoute(
path: 'games',
builder: (BuildContext context, GoRouterState state) {
return const GameScreen();
},
),
GoRoute(
path: 'ranking',
builder: (BuildContext context, GoRouterState state) {
return const RankScreen();
},
),
GoRoute(
path: 'splash',
builder: (BuildContext context, GoRouterState state) {
return const WelcomeScreen();
},
),
],
),
],
);
class MyApp extends StatelessWidget {
const MyApp({super.key});

@ -0,0 +1,24 @@
import 'package:flutter/material.dart';
class GradientText extends StatelessWidget {
const GradientText(
this.text, {
required this.gradient,
this.style,
});
final String text;
final TextStyle? style;
final Gradient gradient;
@override
Widget build(BuildContext context) {
return ShaderMask(
blendMode: BlendMode.srcIn,
shaderCallback: (bounds) => gradient.createShader(
Rect.fromLTWH(0, 0, bounds.width, bounds.height),
),
child: Text(text, style: style),
);
}
}

@ -0,0 +1,100 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../widgets/analysis_card.dart';
import '../widgets/scores_list_widget.dart';
class AnalysisScreen extends StatefulWidget {
const AnalysisScreen({Key? key}) : super(key: key);
@override
State<AnalysisScreen> createState() => _AnalysisScreenState();
}
class _AnalysisScreenState extends State<AnalysisScreen> {
@override
Widget build(BuildContext context) {
return ScrollConfiguration(
behavior: CustomScroll(),
child: SingleChildScrollView(
child: Stack(alignment: Alignment.topCenter, children: [
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 1.45,
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff19BDE0),
Color(0xff4A17DC),
],
)),
),
Image.asset("assets/images/background_analysis.png"),
Positioned(
top: 150,
child: SizedBox(
width: MediaQuery.of(context).size.width,
height: 180,
child: Stack(
alignment: Alignment.center,
children: [
Positioned(
left: 34,
child: SpareCard(score: 12),
),
Positioned(
top: 0,
child: StrikeCard(score: 12),
),
Positioned(
right: 34,
child: GameCard(score: 12),
)
],
),
)),
Align(
alignment: AlignmentDirectional.topCenter,
child: Container(
height: 120,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/image_analysis.png"),
)),
child: Center(
child: Text(
"Analysis",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Color(0xff1ABAE0),
fontSize: 20),
)),
),
),
Positioned(
bottom: 100,
child: Wrap(
direction: Axis.vertical,
spacing: 10,
verticalDirection: VerticalDirection.up,
children: [
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
StatsCard(title: "Average", val: 12),
],
))
]),
));
}
}

@ -1,10 +1,10 @@
import 'package:bowl_in/presentation/font.dart';
import 'package:bowl_in/views/profile_screen.dart';
import 'package:bowl_in/views/rank_screen.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../widgets/button_new_party.dart';
import '../widgets/scores_list_widget.dart';
import 'analysis_screen.dart';
import 'game_screen.dart';
class MainScreen extends StatefulWidget {
@ -15,21 +15,18 @@ class MainScreen extends StatefulWidget {
}
class _MainScreenState extends State<MainScreen> {
int _index = 0;
int get index => _index;
final screens = [
const GameScreen(),
const RankScreen(),
const RankScreen(),
const RankScreen(),
];
int currentPageIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
extendBody: true,
resizeToAvoidBottomInset: false,
body: screens[_index],
body: [
GameScreen(),
RankScreen(),
AnalysisScreen(),
ProfileScreen()
][currentPageIndex],
bottomNavigationBar: SizedBox(
height: 75,
child: NavigationBarTheme(
@ -52,12 +49,12 @@ class _MainScreenState extends State<MainScreen> {
),
child: NavigationBar(
animationDuration: const Duration(microseconds: 800),
selectedIndex: index,
selectedIndex: currentPageIndex,
labelBehavior:
NavigationDestinationLabelBehavior.alwaysHide,
height: MediaQuery.of(context).size.height * 0.1,
onDestinationSelected: (index) =>
setState(() => _index = index),
setState(() => currentPageIndex = index),
backgroundColor: Colors.white,
destinations: const [
NavigationDestination(
@ -74,26 +71,26 @@ class _MainScreenState extends State<MainScreen> {
),
NavigationDestination(
icon: Icon(
Icons.show_chart,
BowlInFont.rank_icon,
color: Colors.grey,
size: 25,
size: 21,
),
label: '',
selectedIcon: Icon(
Icons.show_chart,
size: 25,
BowlInFont.rank_icon,
size: 21,
),
),
NavigationDestination(
icon: Icon(
BowlInFont.rank_icon,
Icons.show_chart,
color: Colors.grey,
size: 21,
size: 25,
),
label: '',
selectedIcon: Icon(
BowlInFont.rank_icon,
size: 21,
Icons.show_chart,
size: 25,
),
),
NavigationDestination(

@ -0,0 +1,59 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../widgets/achievements_list_widget.dart';
class ProfileScreen extends StatefulWidget {
const ProfileScreen({Key? key}) : super(key: key);
@override
State<ProfileScreen> createState() => _ProfileScreenState();
}
class _ProfileScreenState extends State<ProfileScreen> {
@override
Widget build(BuildContext context) {
return Stack(alignment: Alignment.topCenter, children: [
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height * 1.45,
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xff19BDE0),
Color(0xff4A17DC),
]))),
Align(
alignment: AlignmentDirectional.topCenter,
child: Container(
height: 120,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/image_profile.png"),
)),
child: Center(
child: Text(
"Profile",
style: TextStyle(
fontWeight: FontWeight.bold, color: Colors.white, fontSize: 20),
)),
),
),
Padding(
padding: EdgeInsets.fromLTRB(0, 0, 0, 100),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
verticalDirection: VerticalDirection.up,
children: [
ListAchievementWidget(nbUnlocked: 1),
Padding(
padding: EdgeInsets.fromLTRB(40, 0, 0, 0),
child: ProfileWidget()),
],
)),
]);
}
}

@ -0,0 +1,231 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class AchievementWidget extends StatelessWidget {
final String imagePath;
final String imagePathUnlocked;
final int isUnlocked;
const AchievementWidget(
{Key? key,
required this.imagePath,
required this.imagePathUnlocked,
required this.isUnlocked})
: super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: 100,
height: 100,
decoration: BoxDecoration(
image: DecorationImage(
image: this.isUnlocked == 0
? AssetImage(this.imagePath)
: AssetImage(this.imagePathUnlocked),
),
),
);
}
}
class ListAchievementWidget extends StatelessWidget {
final int nbUnlocked;
const ListAchievementWidget({Key? key, required this.nbUnlocked})
: super(key: key);
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
width: 520,
height: 520,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/image_achievement_table.png"),
),
),
child: Padding(
padding: EdgeInsets.fromLTRB(0, 65, 0, 0),
child: Wrap(
alignment: WrapAlignment.center,
runSpacing: 15,
spacing: -5,
children: [
Container(
width: double.infinity,
child: Center(
child: Padding(
padding: EdgeInsets.fromLTRB(200, 0, 0, 30),
child: RotationTransition(
turns: new AlwaysStoppedAnimation(5 / 360),
child: Text(
this.nbUnlocked.toString() + "/9 unlocked",
style: GoogleFonts.roboto(
fontWeight: FontWeight.bold,
fontStyle: FontStyle.italic,
fontSize: 13,
color: Color(0xff2461B2)),
)),
),
),
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 0,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 1,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 0,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 0,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 1,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 1,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 1,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 0,
),
AchievementWidget(
imagePath: 'assets/images/image_achievement_card.png',
imagePathUnlocked:
'assets/images/image_achievement_unlocked.png',
isUnlocked: 0,
),
],
),
)),
],
);
}
}
class ProfileWidget extends StatelessWidget {
const ProfileWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Row(
children: [
Container(
height: 80,
width: 80,
decoration: BoxDecoration(
color: Colors.purple,
borderRadius: BorderRadius.all(Radius.circular(100)),
),
),
Padding(
padding: EdgeInsets.fromLTRB(20, 0, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Lucas",
style: GoogleFonts.roboto(
color: Colors.white,
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
fontSize: 25),
),
Padding(
padding: EdgeInsets.fromLTRB(0, 0, 0, 5),
child: RichText(
text: TextSpan(
text: '',
style: DefaultTextStyle.of(context).style,
children: <TextSpan>[
TextSpan(
text: "Highscore :",
style: GoogleFonts.roboto(
color: Colors.white.withOpacity(0.65),
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
fontSize: 15),
),
TextSpan(
text: "122 pts",
style: GoogleFonts.roboto(
color: Color(0xffF40375).withOpacity(0.75),
fontStyle: FontStyle.italic,
fontWeight: FontWeight.w900,
fontSize: 20),
),
],
),
),
),
RichText(
text: TextSpan(
text: '',
style: DefaultTextStyle.of(context).style,
children: <TextSpan>[
TextSpan(
text: "Last game ",
style: GoogleFonts.roboto(
color: Colors.white.withOpacity(0.65),
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
fontSize: 15),
),
TextSpan(
text: "23",
style: GoogleFonts.roboto(
color: Colors.white,
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
fontSize: 15),
),
TextSpan(
text: " days(s) ago",
style: GoogleFonts.roboto(
color: Colors.white.withOpacity(0.65),
fontStyle: FontStyle.italic,
fontWeight: FontWeight.bold,
fontSize: 15),
),
],
),
),
],
),
)
],
);
}
}

@ -0,0 +1,150 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class SpareCard extends StatelessWidget {
final int score;
const SpareCard({Key? key, required this.score}) : super(key: key);
@override
Widget build(BuildContext context) {
return Stack(
alignment: Alignment.center,
children: [
Container(
width: 100,
height: 150,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/image_spare_card.png"),
),
)),
Padding(
padding: EdgeInsets.fromLTRB(0, 70, 0, 0),
child: Text(
this.score.toString(),
style: GoogleFonts.roboto(
fontWeight: FontWeight.bold,
color: Color(0xffF40375),
fontSize: 28),
),
)
],
);
}
}
class StrikeCard extends StatelessWidget {
final int score;
const StrikeCard({Key? key, required this.score}) : super(key: key);
@override
Widget build(BuildContext context) {
return Stack(
alignment: Alignment.center,
children: [
Container(
height: 150,
width: 100,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/image_strike_card.png"),
),
)),
Padding(
padding: EdgeInsets.fromLTRB(0, 70, 0, 0),
child: Text(
this.score.toString(),
style: GoogleFonts.roboto(
fontWeight: FontWeight.bold,
color: Color(0xffF40375),
fontSize: 28),
),
)
],
);
}
}
class GameCard extends StatelessWidget {
final int score;
const GameCard({Key? key, required this.score}) : super(key: key);
@override
Widget build(BuildContext context) {
return Stack(
alignment: Alignment.center,
children: [
Container(
height: 150,
width: 100,
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/image_game_card.png"),
),
)),
Padding(
padding: EdgeInsets.fromLTRB(0, 60, 0, 0),
child: Text(
this.score.toString(),
style: GoogleFonts.roboto(
fontWeight: FontWeight.bold,
color: Color(0xffF40375),
fontSize: 28),
),
)
],
);
}
}
class StatsCard extends StatelessWidget {
final String title;
final int val;
const StatsCard({Key? key, required this.title, required this.val})
: super(key: key);
@override
Widget build(BuildContext context) {
return Container(
height: 50,
width: MediaQuery.of(context).size.width - 70,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12)),
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.2),
spreadRadius: 1,
blurRadius: 8,
offset: Offset(0, 0), // changes position of shadow
),
],
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 0, 20, 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
this.title,
style: GoogleFonts.roboto(
fontWeight: FontWeight.bold,
fontStyle: FontStyle.italic,
color: Color(0xff241E40),
fontSize: 18),
),
Spacer(),
Text(
this.val.toString(),
style: GoogleFonts.roboto(
fontWeight: FontWeight.w900,
fontSize: 28,
color: Color(0xffF40375)),
),
],
),
));
}
}

@ -36,7 +36,7 @@ class NewGameModal extends StatelessWidget {
children: [
Transform.scale(
scale: 1.14,
child: Image.asset("assets/images/image_newgame_modal.png")),
child: Image.asset("assets/images/image_newgame_modal(1).png")),
SizedBox(
height: 245,
child: Column(

@ -58,7 +58,7 @@ class ProfilPodiumWidget extends StatelessWidget {
),
child: Center(
child: Text(
this.score.toString(),
this.score.toString() + " pts",
style: GoogleFonts.roboto(
color: Colors.white,
fontStyle: FontStyle.italic,

@ -1,6 +1,20 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
description:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.5"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.2"
async:
dependency: transitive
description:
@ -22,6 +36,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
checked_yaml:
dependency: transitive
description:
name: checked_yaml
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.5"
clock:
dependency: transitive
description:
@ -36,6 +64,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.16.0"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.1"
crypto:
dependency: transitive
description:
@ -76,6 +111,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_launcher_icons:
dependency: "direct dev"
description:
name: flutter_launcher_icons
url: "https://pub.dartlang.org"
source: hosted
version: "0.11.0"
flutter_lints:
dependency: "direct dev"
description:
@ -88,6 +130,18 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
go_router:
dependency: "direct main"
description:
name: go_router
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.1"
google_fonts:
dependency: "direct main"
description:
@ -109,6 +163,27 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.2"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
js:
dependency: transitive
description:
name: js
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.4"
json_annotation:
dependency: transitive
description:
name: json_annotation
url: "https://pub.dartlang.org"
source: hosted
version: "4.8.0"
lints:
dependency: transitive
description:
@ -116,6 +191,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
logging:
dependency: transitive
description:
name: logging
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
matcher:
dependency: transitive
description:
@ -186,6 +268,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
platform:
dependency: transitive
description:
@ -200,6 +289,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.3"
pointycastle:
dependency: transitive
description:
name: pointycastle
url: "https://pub.dartlang.org"
source: hosted
version: "3.6.2"
process:
dependency: transitive
description:
@ -289,6 +385,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0+3"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
yaml:
dependency: transitive
description:
name: yaml
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.1"
sdks:
dart: ">=2.18.2 <3.0.0"
flutter: ">=3.0.0"
flutter: ">=3.3.0"

@ -38,17 +38,25 @@ dependencies:
cupertino_icons: ^1.0.2
simple_gradient_text: ^1.2.4
google_fonts: ^3.0.1
go_router: ^6.0.1
dev_dependencies:
flutter_test:
sdk: flutter
flutter_launcher_icons: ^0.11.0
# The "flutter_lints" package below contains a set of recommended lints to
# encourage good coding practices. The lint set provided by the package is
# 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: ^2.0.0
flutter_icons:
android: true
ios: true
image_path: "assets/images/icon.png"
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

Loading…
Cancel
Save