Delete login page and add function for http requet
This commit is contained in:
@@ -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),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user