Skip to content

Commit

Permalink
Merge branch 'develop' into feat/connect-to-backend
Browse files Browse the repository at this point in the history
  • Loading branch information
kjy2844 authored May 13, 2022
2 parents 028150b + 81db632 commit ba68844
Show file tree
Hide file tree
Showing 10 changed files with 248 additions and 101 deletions.
Binary file added images/login_background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/login_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
46 changes: 41 additions & 5 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import 'package:flutter/material.dart';
import 'package:kai_friends_app/screens/my_info/my_info.dart';
import 'package:kai_friends_app/screens/login/login.dart';
import 'package:kai_friends_app/screens/friend/friend_list.dart';
import 'package:kai_friends_app/screens/main/friend_recommendation.dart';
import 'package:kai_friends_app/screens/my_info/my_info.dart';
import 'package:kai_friends_app/screens/received_requests/received_requests.dart';

void main() {
runApp(KaiFriendsApp());
Expand All @@ -10,14 +12,48 @@ void main() {
class KaiFriendsApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
return const MaterialApp(
title: "Kai Friends",
home: HomePage(),
home: HomePageWrapper(),
);
}
}

class HomePageWrapper extends StatelessWidget {
const HomePageWrapper({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _checkLogin(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
default:
return snapshot.data == true
? const HomePage()
: const LoginPage();
}
});
}

Future<bool> _checkLogin() async {
// TODO: check session exists
// true: go to homepage, false: go to login page
await Future.delayed(const Duration(milliseconds: 2000));
return false;
}
}

class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);

@override
_HomePageState createState() => _HomePageState();
}
Expand All @@ -26,11 +62,11 @@ class _HomePageState extends State<HomePage> {
int _selectedIndex = 0;
final accentColor = const Color(0xFFE73700);
static const TextStyle optionStyle =
TextStyle(fontSize: 30, fontWeight: FontWeight.bold);
TextStyle(fontSize: 30, fontWeight: FontWeight.bold);

List<Widget> _widgetOptions = <Widget>[
UserRecommendationScreen(),
Text('받은 신청', style: optionStyle), // TODO: replace with widget
ReceivedRequestsScreen(),
FriendListScreen(),
MyInfoScreen(),
];
Expand Down
37 changes: 37 additions & 0 deletions lib/screens/login/login.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import 'package:flutter/material.dart';
import 'package:kai_friends_app/widgets/main_button.dart';

class LoginPage extends StatelessWidget {
const LoginPage({Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
width: double.infinity,
height: double.infinity,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage('images/login_background.png'),
fit: BoxFit.cover,
),
),
child: SafeArea(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
FractionallySizedBox(
widthFactor: 0.7,
child: Image.asset('images/login_logo.png'),
),
MainButton(name: '카이스트 통합인증으로 로그인 / 가입', f: (){}),
const SizedBox(height: 50),
],
),
),
),
),
);
}
}
16 changes: 15 additions & 1 deletion lib/screens/main/friend_filter.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:kai_friends_app/assets/constants.dart';
import 'package:kai_friends_app/widgets/color_chip.dart';
import 'package:kai_friends_app/widgets/main_button.dart';

class FriendFilterScreen extends StatefulWidget {
const FriendFilterScreen({Key? key}) : super(key: key);
Expand Down Expand Up @@ -46,6 +47,17 @@ class _FriendFilterScreenState extends State<FriendFilterScreen> {
filters: searchResult,
onPressed: onSearchResultPressed,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
MainButton(
name: '완료',
f: () {
// TODO: addedFilters를 backend로 전송
Navigator.pop(context);
}),
],
),
],
),
),
Expand Down Expand Up @@ -122,7 +134,9 @@ class SearchBar extends StatelessWidget {
decoration: InputDecoration(
iconColor: Colors.black,
prefixIcon: IconButton(
onPressed: () {}, // TODO: move to prev page
onPressed: () {
Navigator.pop(context);
}, // TODO: move to prev page
icon: const Icon(Icons.chevron_left),
),
hintText: '검색',
Expand Down
117 changes: 24 additions & 93 deletions lib/screens/main/friend_recommendation.dart
Original file line number Diff line number Diff line change
@@ -1,101 +1,32 @@
import 'dart:collection';

import 'package:flutter/material.dart';
import 'package:kai_friends_app/models/sample/sample_users.dart';
import 'package:kai_friends_app/models/user.dart';
import 'package:kai_friends_app/screens/main/user_profile_view.dart';

class UserRecommendationScreen extends StatefulWidget {
Queue<UserProfile> userProfiles =
Queue<UserProfile>.from(sampleUserProfiles); // TODO: fetch with API

@override
_UserRecommendationScreenState createState() =>
_UserRecommendationScreenState();
}

class _UserRecommendationScreenState extends State<UserRecommendationScreen> {
late UserProfile userProfile;

@override
void initState() {
super.initState();
userProfile = widget.userProfiles.first;
}

void changeUserProfile() {
if (widget.userProfiles.length == 1) {
print('End of user list');
return;
}

widget.userProfiles.removeFirst();
setState(() {
userProfile = widget.userProfiles.first;
});
}
import 'package:kai_friends_app/screens/main/friend_filter.dart';
import 'package:kai_friends_app/widgets/friend_selection/friend_selection_view.dart';
import 'package:kai_friends_app/widgets/top_app_bar.dart';

class UserRecommendationScreen extends StatelessWidget {
final String getFriendRecommendationUrl =
'/friendrecommendation'; // TODO: modify URL
@override
Widget build(BuildContext context) {
return SafeArea(
child: SingleChildScrollView(
child: Column(
children: [
const SizedBox(height: 60.0), // TODO: add filter button
UserProfileView(userProfile: userProfile),
const SizedBox(height: 30.0),
FriendDecisionButtons(callback: changeUserProfile),
],
),
// TODO: add filter button
return Scaffold(
appBar: TopAppBar(title: '', actions: [
TextButton.icon(
style: TextButton.styleFrom(
primary: Colors.black,
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => FriendFilterScreen()));
},
icon: const Icon(Icons.filter_list),
label: const Text('필터')),
]),
body: FriendSelectionView(
getUserProfilesUrl: getFriendRecommendationUrl,
),
);
}
}

class FriendDecisionButtons extends StatelessWidget {
FriendDecisionButtons({required this.callback});

final Function callback;

@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
IconButton(
iconSize: 50,
icon: const Icon(
Icons.clear,
color: Color(0xFFE73700),
),
tooltip: '아니요',
onPressed: () {
callback();
},
),
IconButton(
iconSize: 50,
icon: const Icon(
Icons.autorenew,
color: Color(0xFFE73700),
),
tooltip: '패스할래요',
onPressed: () {
callback();
},
),
IconButton(
iconSize: 50,
icon: const Icon(
Icons.favorite,
color: Color(0xFFE73700),
),
tooltip: '좋아요',
onPressed: () {
callback();
},
),
],
);
}
}
21 changes: 21 additions & 0 deletions lib/screens/received_requests/received_requests.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
import 'package:kai_friends_app/widgets/friend_selection/friend_selection_view.dart';
import 'package:kai_friends_app/widgets/top_app_bar.dart';

class ReceivedRequestsScreen extends StatelessWidget {
final String getReceivedRequestsUrl =
'/receievedrequests'; // TODO: modify URL

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: const TopAppBar(
title: '',
actions: [],
),
body: FriendSelectionView(
getUserProfilesUrl: getReceivedRequestsUrl,
),
);
}
}
3 changes: 1 addition & 2 deletions lib/screens/register/register_confirm.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import 'package:flutter/material.dart';
import 'package:kai_friends_app/assets/constants.dart';
import 'package:kai_friends_app/main.dart';
import 'package:kai_friends_app/models/sample/sample_users.dart';
import 'package:kai_friends_app/models/user.dart';
import 'package:kai_friends_app/screens/main/user_profile_view.dart';
import 'package:kai_friends_app/widgets/friend_selection/user_profile_view.dart';
import 'package:kai_friends_app/widgets/main_button.dart';

class RegisterConfirm extends StatelessWidget {
Expand Down
Loading

0 comments on commit ba68844

Please sign in to comment.