mirror of
https://gitlab.com/moepoi/moepoi.dev.git
synced 2025-04-27 05:26:20 +02:00
Add IpInfo
This commit is contained in:
parent
fc1366f643
commit
6b26c0e507
2 changed files with 204 additions and 174 deletions
1
assets/images/home/ipinfo.svg
Normal file
1
assets/images/home/ipinfo.svg
Normal file
File diff suppressed because one or more lines are too long
After (image error) Size: 59 KiB |
|
@ -18,183 +18,212 @@ class _HomeState extends State<Home> {
|
|||
title: 'Moe Poi',
|
||||
color: const Color.fromARGB(255, 80, 192, 144),
|
||||
child: Scaffold(
|
||||
body: Center(
|
||||
child: ScrollConfiguration(
|
||||
behavior: HideScrollGlow(),
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
children: [
|
||||
const SizedBox(height: 20),
|
||||
Center(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(100),
|
||||
child: Container(
|
||||
width: 200,
|
||||
height: 200,
|
||||
decoration: const BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage('assets/images/home/profile.webp'),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
body: Center(
|
||||
child: ScrollConfiguration(
|
||||
behavior: HideScrollGlow(),
|
||||
child: ListView(shrinkWrap: true, children: [
|
||||
const SizedBox(height: 20),
|
||||
Center(
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(100),
|
||||
child: Container(
|
||||
width: 200,
|
||||
height: 200,
|
||||
decoration: const BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage('assets/images/home/profile.webp'),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
const Text(
|
||||
'Moe Poi',
|
||||
style: TextStyle(
|
||||
fontSize: 50,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(Uri.parse('https://t.me/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/telegram.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'Telegram',
|
||||
),
|
||||
)
|
||||
),
|
||||
const SizedBox(width: 10.0,),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(Uri.parse('https://github.com/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/github.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'GitHub',
|
||||
),
|
||||
)
|
||||
),
|
||||
const SizedBox(width: 10.0,),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(Uri.parse('https://gitlab.com/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/gitlab.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'Gitlab',
|
||||
),
|
||||
)
|
||||
),
|
||||
const SizedBox(width: 10.0,),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(Uri.parse('https://linkedin.com/in/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/linkedin.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'Linkedin',
|
||||
),
|
||||
)
|
||||
)
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/resume');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
elevation: MaterialStateProperty.all(5.0),
|
||||
padding: MaterialStateProperty.all(const EdgeInsets.all(25.0)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30.0),
|
||||
)),
|
||||
backgroundColor: MaterialStateProperty.all(const Color.fromARGB(255, 80, 192, 144)),
|
||||
),
|
||||
child: const Text('Resume'),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 20),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/skills');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
elevation: MaterialStateProperty.all(5.0),
|
||||
padding: MaterialStateProperty.all(const EdgeInsets.all(25.0)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30.0),
|
||||
)),
|
||||
backgroundColor: MaterialStateProperty.all(const Color.fromARGB(255, 80, 192, 144)),
|
||||
),
|
||||
child: const Text('Skills'),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 20),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/projects');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
elevation: MaterialStateProperty.all(5.0),
|
||||
padding: MaterialStateProperty.all(const EdgeInsets.all(25.0)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30.0),
|
||||
)),
|
||||
backgroundColor: MaterialStateProperty.all(const Color.fromARGB(255, 80, 192, 144)),
|
||||
),
|
||||
child: const Text('Projects'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
]
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
const Text(
|
||||
'Moe Poi',
|
||||
style: TextStyle(
|
||||
fontSize: 50,
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(
|
||||
Uri.parse('https://t.me/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/telegram.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'Telegram',
|
||||
),
|
||||
)),
|
||||
const SizedBox(
|
||||
width: 10.0,
|
||||
),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(
|
||||
Uri.parse('https://github.com/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/github.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'GitHub',
|
||||
),
|
||||
)),
|
||||
const SizedBox(
|
||||
width: 10.0,
|
||||
),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(
|
||||
Uri.parse('https://gitlab.com/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/gitlab.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'Gitlab',
|
||||
),
|
||||
)),
|
||||
const SizedBox(
|
||||
width: 10.0,
|
||||
),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(
|
||||
Uri.parse('https://linkedin.com/in/moepoi'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/linkedin.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'Linkedin',
|
||||
),
|
||||
)),
|
||||
const SizedBox(
|
||||
width: 10.0,
|
||||
),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
splashFactory: NoSplash.splashFactory,
|
||||
onTap: () async {
|
||||
if (!await launchUrl(
|
||||
Uri.parse('https://ipinfo.io/AS209310'))) {
|
||||
throw 'Could not launch';
|
||||
}
|
||||
},
|
||||
child: SvgPicture.asset(
|
||||
'assets/images/home/ipinfo.svg',
|
||||
height: 40,
|
||||
width: 40,
|
||||
fit: BoxFit.contain,
|
||||
semanticsLabel: 'IpInfo',
|
||||
),
|
||||
))
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/resume');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
elevation: MaterialStateProperty.all(5.0),
|
||||
padding:
|
||||
MaterialStateProperty.all(const EdgeInsets.all(25.0)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30.0),
|
||||
)),
|
||||
backgroundColor: MaterialStateProperty.all(
|
||||
const Color.fromARGB(255, 80, 192, 144)),
|
||||
),
|
||||
child: const Text('Resume'),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 20),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/skills');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
elevation: MaterialStateProperty.all(5.0),
|
||||
padding:
|
||||
MaterialStateProperty.all(const EdgeInsets.all(25.0)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30.0),
|
||||
)),
|
||||
backgroundColor: MaterialStateProperty.all(
|
||||
const Color.fromARGB(255, 80, 192, 144)),
|
||||
),
|
||||
child: const Text('Skills'),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 20),
|
||||
Flexible(
|
||||
flex: 1,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(context, '/projects');
|
||||
},
|
||||
style: ButtonStyle(
|
||||
elevation: MaterialStateProperty.all(5.0),
|
||||
padding:
|
||||
MaterialStateProperty.all(const EdgeInsets.all(25.0)),
|
||||
shape: MaterialStateProperty.all(RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(30.0),
|
||||
)),
|
||||
backgroundColor: MaterialStateProperty.all(
|
||||
const Color.fromARGB(255, 80, 192, 144)),
|
||||
),
|
||||
child: const Text('Projects'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
]),
|
||||
),
|
||||
)),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue