Skip to content

Commit d2a13b1

Browse files
committed
homescreen components
1 parent 1fda786 commit d2a13b1

File tree

7 files changed

+110
-12
lines changed

7 files changed

+110
-12
lines changed

lib/core/theme_manager/colors.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
import 'package:flutter/material.dart';
22

33
const Color appBarColor = Color(0xff7187EA);
4+
const Color textPurpleColor = Color(0xff7187EA);
5+
const Color iconPurpleColor = Color(0xff7187EA);
6+
const Color greyBgColor = Color(0xffE5E5E5);

lib/core/theme_manager/theme.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:chatapp/core/theme_manager/colors.dart';
22
import 'package:flutter/material.dart';
33

4-
ThemeData themedata =
5-
ThemeData(appBarTheme: const AppBarTheme(backgroundColor: appBarColor));
4+
ThemeData themedata = ThemeData(
5+
appBarTheme: const AppBarTheme(backgroundColor: appBarColor),
6+
scaffoldBackgroundColor: greyBgColor);

lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class MyApp extends StatelessWidget {
1515
return MaterialApp(
1616
theme: themedata,
1717
debugShowCheckedModeBanner: false,
18-
home: const Homepage(),
18+
home: const HomeScreen(),
1919
);
2020
}
2121
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import 'package:chatapp/core/theme_manager/colors.dart';
2+
import 'package:chatapp/widgets/textformfield.dart';
3+
import 'package:flutter/cupertino.dart';
4+
import 'package:flutter/material.dart';
5+
6+
class GroupScreen extends StatelessWidget {
7+
const GroupScreen({Key? key}) : super(key: key);
8+
9+
@override
10+
Widget build(BuildContext context) {
11+
return Scaffold(
12+
appBar: AppBar(
13+
title: Text(groupChatName!),
14+
),
15+
body: SafeArea(
16+
child: Column(
17+
children: [
18+
Expanded(child: Container()),
19+
Row(
20+
children: [
21+
Expanded(
22+
child: CustomTextFormField(
23+
controller: chatTextEditingController,
24+
formkey: chatFormkey,
25+
)),
26+
const SizedBox(
27+
height: 20,
28+
),
29+
IconButton(
30+
onPressed: () {},
31+
icon: const Icon(
32+
Icons.send,
33+
color: iconPurpleColor,
34+
))
35+
],
36+
)
37+
],
38+
),
39+
),
40+
);
41+
}
42+
}

lib/src/presentation/homepage/homepage.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'package:chatapp/core/theme_manager/colors.dart';
22
import 'package:chatapp/widgets/customdialog.dart';
3-
import 'package:flutter/cupertino.dart';
3+
44
import 'package:flutter/material.dart';
55

6-
class Homepage extends StatelessWidget {
7-
const Homepage({Key? key}) : super(key: key);
6+
class HomeScreen extends StatelessWidget {
7+
const HomeScreen({Key? key}) : super(key: key);
88

99
@override
1010
Widget build(BuildContext context) {

lib/widgets/customdialog.dart

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,47 @@
1+
import 'package:chatapp/core/theme_manager/colors.dart';
2+
import 'package:chatapp/src/presentation/groupage/grouppage.dart';
13
import 'package:chatapp/widgets/textformfield.dart';
24
import 'package:flutter/cupertino.dart';
35
import 'package:flutter/material.dart';
46

57
customDialog(BuildContext context) {
68
return showCupertinoDialog(
9+
barrierLabel: "Create new chat",
710
context: context,
811
builder: (context) {
912
return CupertinoAlertDialog(
1013
title: const Padding(
1114
padding: EdgeInsets.all(12.0),
1215
child: Text("Group Name"),
1316
),
14-
content: const CustomTextFormField(),
17+
content: CustomTextFormField(
18+
controller: groupNameTextEditingController,
19+
formkey: groupChatNameFormkey,
20+
),
1521
actions: [
16-
TextButton(onPressed: () {}, child: const Text("Create")),
1722
TextButton(
1823
onPressed: () {
1924
Navigator.of(context).pop();
25+
groupNameTextEditingController.clear();
26+
},
27+
child: const Text(
28+
"Cancel",
29+
style: TextStyle(color: textPurpleColor),
30+
)),
31+
TextButton(
32+
onPressed: () {
33+
if (groupChatNameFormkey.currentState!.validate()) {
34+
Navigator.of(context).pop();
35+
Navigator.of(context)
36+
.push(MaterialPageRoute(builder: (context) {
37+
return const GroupScreen();
38+
})).then((value) => groupNameTextEditingController.clear());
39+
}
2040
},
21-
child: const Text("Cancel"))
41+
child: const Text(
42+
"Create",
43+
style: TextStyle(color: textPurpleColor),
44+
)),
2245
],
2346
);
2447
});

lib/widgets/textformfield.dart

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,39 @@
1+
import 'package:chatapp/core/theme_manager/colors.dart';
12
import 'package:flutter/cupertino.dart';
3+
import 'package:flutter/material.dart';
24

3-
class CustomTextFormField extends StatelessWidget {
4-
const CustomTextFormField({super.key});
5+
TextEditingController groupNameTextEditingController = TextEditingController();
6+
TextEditingController chatTextEditingController = TextEditingController();
7+
String? groupChatName;
8+
final groupChatNameFormkey = GlobalKey<FormState>();
9+
final chatFormkey = GlobalKey<FormState>();
510

11+
class CustomTextFormField extends StatelessWidget {
12+
const CustomTextFormField(
13+
{super.key, required this.controller, required this.formkey});
14+
final TextEditingController controller;
15+
final GlobalKey<FormState> formkey;
616
@override
717
Widget build(BuildContext context) {
8-
return const CupertinoTextField();
18+
return Form(
19+
key: formkey,
20+
child: CupertinoTextFormFieldRow(
21+
cursorColor: iconPurpleColor,
22+
decoration: const BoxDecoration(color: Colors.white),
23+
controller: controller,
24+
textInputAction: TextInputAction.newline,
25+
maxLines: 5,
26+
minLines: 1,
27+
onChanged: (value) {
28+
groupChatName = groupNameTextEditingController.text;
29+
},
30+
validator: (value) {
31+
if (value!.isEmpty) {
32+
return "Field cannot be empty";
33+
}
34+
return null;
35+
},
36+
),
37+
);
938
}
1039
}

0 commit comments

Comments
 (0)