Delete login page and add function for http requet

This commit is contained in:
paoloGuagnano
2024-03-20 17:40:51 +01:00
parent 22ccd61986
commit ef9fba11c8
6 changed files with 102 additions and 155 deletions

View File

@@ -1,77 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class CourseCard extends StatelessWidget {
const CourseCard({
Key? key,
required this.title,
this.color = const Color(0xFF7553F6),
this.iconSrc = "assets/icons/ios.svg",
}) : super(key: key);
final String title, iconSrc;
final Color color;
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 24),
height: 280,
width: 260,
decoration: BoxDecoration(
color: color,
borderRadius: const BorderRadius.all(Radius.circular(30)),
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.only(top: 6, right: 8),
child: Column(
children: [
Text(
title,
style: Theme.of(context).textTheme.titleLarge!.copyWith(
color: Colors.white, fontWeight: FontWeight.w600),
),
const Padding(
padding: EdgeInsets.only(top: 12, bottom: 8),
child: Text(
"Build and animate an iOS app from scratch",
style: TextStyle(
color: Colors.white38,
),
),
),
const Text(
"61 SECTIONS - 11 HOURS",
style: TextStyle(
color: Colors.white38,
),
),
const Spacer(),
Row(
children: List.generate(
3,
(index) => Transform.translate(
offset: Offset((-10 * index).toDouble(), 0),
child: CircleAvatar(
radius: 20,
backgroundImage: AssetImage(
"assets/avaters/Avatar ${index + 1}.jpg",
),
),
),
),
),
],
),
),
),
SvgPicture.asset(iconSrc),
],
),
);
}
}

View File

@@ -1,59 +0,0 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
class SecondaryCourseCard extends StatelessWidget {
const SecondaryCourseCard({
Key? key,
required this.title,
this.iconsSrc = "assets/icons/ios.svg",
this.colorl = const Color(0xFF7553F6),
}) : super(key: key);
final String title, iconsSrc;
final Color colorl;
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 20),
decoration: BoxDecoration(
color: colorl,
borderRadius: const BorderRadius.all(Radius.circular(20))),
child: Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: Theme.of(context).textTheme.headlineSmall!.copyWith(
color: Colors.white,
fontWeight: FontWeight.w600,
),
),
const SizedBox(height: 4),
const Text(
"Watch video - 15 mins",
style: TextStyle(
color: Colors.white60,
fontSize: 16,
),
)
],
),
),
const SizedBox(
height: 40,
child: VerticalDivider(
// thickness: 5,
color: Colors.white70,
),
),
const SizedBox(width: 8),
SvgPicture.asset(iconsSrc)
],
),
);
}
}

View File

@@ -0,0 +1,52 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import '../../../model/word.dart';
class WordsScreen extends StatefulWidget {
const WordsScreen({super.key});
@override
State<WordsScreen> createState() => _WordsScreenState();
}
class _WordsScreenState extends State<WordsScreen> {
Future<Word> fetchWord() async {
final response = await http.get(
Uri.parse("https://5ddc-37-101-56-133.ngrok-free.app/api/words/tasto"));
if (response.statusCode == 200) {
return Word.fromJson(jsonDecode(response.body));
} else {
throw Exception('Failed to fetch Word');
}
}
@override
Widget build(BuildContext context) {
return FutureBuilder<Word>(
future: fetchWord(),
builder: (context, snapshot) {
if (snapshot.hasData) {
// Display the fetched joke when data is available
return Center(child: Text(
snapshot.data!.translation,
style: TextStyle(fontSize: 30, color: Colors.grey[800])
)
);
} else if (snapshot.hasError) {
// Display an error message if there's an error
return Text('${snapshot.error}');
} else {
// Display a loading indicator while waiting for data
return Center(child: CircularProgressIndicator());
}
},
);
}
}