hello, friends I have developed a flutter app dragon ball z game.
This is my GitHub repo you can download the code from here:
For this, we are mainly using 3 pages main.dart,screen2.dart,screen3.dart
Main.dart
import ‘package:dragonballz/screen2.dart’;
import ‘package:dragonballz/screen3.dart’;
import ‘package:flutter/material.dart’;
final redShadeColor = Colors.red.shade500;
final greyShade = Colors.grey.shade800;
final textColor = Colors.white70;
void main() => runApp(MaterialApp
(
debugShowCheckedModeBanner: false,
home: Dragonballz(),
theme: ThemeData.dark()
.copyWith(appBarTheme: AppBarTheme().copyWith(color: redShadeColor)),
));
class Dragonballz extends StatefulWidget {
@override
_DragonballzState createState() => _DragonballzState();
}
class _DragonballzState extends State<Dragonballz> {
String gokuLabel = ‘Goku’;
String vegetaLabel = ‘Vegeta’;
String winner = ‘’;
String selectedPlayer = ‘’;
int gokuScore = 300;
int vegetaScore = 550;
void calculateWinner() {
setState(() {
this.winner =
this.gokuScore < this.vegetaScore ? vegetaLabel : gokuLabel;
});
}
void playerSelected(String player) {
setState(() {
this.selectedPlayer = player == gokuLabel ? gokuLabel : vegetaLabel;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey.shade900,
appBar: AppBar(
title: Text(‘Dragonballz ‘),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
calculateWinner();
},
backgroundColor: redShadeColor,
child: Image.asset(
‘images/fight.png’,
height: 40.0,
),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
PlayerProfile(
avatar: ‘images/g.png’,
playerName: gokuLabel,
playerScore: gokuScore,
playerSelected: playerSelected,
selected: this.selectedPlayer == gokuLabel ? true : false),
Container(
height: 200,
child: VerticalDivider(
thickness: 3.0,
width: 20,
color: redShadeColor,
),
),
PlayerProfile(
avatar: ‘images/v.png’,
playerName: vegetaLabel,
playerScore: vegetaScore,
playerSelected: playerSelected,
selected: this.selectedPlayer == vegetaLabel ? true : false),
],
),
Visibility(
visible: this.winner != ‘’,
child: GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
if (winner == gokuLabel) {
return Screen2();
} else if (winner == vegetaLabel) {
return Screen3();
}
return null;
},
),
);
},
child: Container(
margin: EdgeInsets.symmetric(horizontal: 30.0, vertical: 20),
width: double.infinity,
height: 70,
decoration: BoxDecoration(
color: greyShade,
borderRadius: BorderRadius.circular(10),
),
child: Center(
child: Text(
‘$winner Wins!’,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30.0,
color: textColor),
),
),
),
),
),
SizedBox(
height: 20,
),
FlatButton(
onPressed: () {
if (this.selectedPlayer == gokuLabel) {
setState(() {
this.gokuScore += 100;
});
} else if (this.selectedPlayer == vegetaLabel) {
setState(() {
this.vegetaScore += 100;
});
}
},
child: Image.asset(
‘images/boost.png’,
width: 100,
height: 100,
color: redShadeColor,
),
),
],
),
);
}
}
class PlayerProfile extends StatelessWidget {
final String avatar, playerName;
final int playerScore;
final bool selected;
final Function playerSelected;
PlayerProfile(
{this.avatar,
this.playerName,
this.playerScore,
this.playerSelected,
this.selected});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
this.playerSelected(this.playerName);
},
child: Container(
width: 170,
height: 280,
decoration: BoxDecoration(
color: selected == true ? redShadeColor : greyShade,
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
backgroundImage: AssetImage(
avatar,
),
radius: 50,
backgroundColor: textColor,
),
SizedBox(
height: 10.0,
),
Text(
playerName,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30.0,
color: textColor),
),
SizedBox(
height: 30,
),
Text(
playerScore.toString(),
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 50.0,
color: textColor),
),
Text(
‘Points’,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15.0,
color: textColor),
),
],
)),
);
}
}
Screen2.dart
import ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;
class Screen2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘Goku Wins!’),
),
backgroundColor: Colors.grey.shade900,
body: Center(
child: Image.asset(‘images/goku.gif’),
),
);
}
}
Screen3.dart
import ‘package:flutter/cupertino.dart’;
import ‘package:flutter/material.dart’;
class Screen3 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘vegeta Wins!’),
),
backgroundColor: Colors.grey.shade900,
body: Center(
child: Image.asset(‘images/vegeta.gif’),
),
);
}
}
You get the images from my GitHub repo in a folder called images.
hay friends don’t forget to the dependencies as assets in the images