Skip to content
This repository has been archived by the owner on Jan 26, 2021. It is now read-only.

Commit

Permalink
merge conflict
Browse files Browse the repository at this point in the history
  • Loading branch information
Techno-Disaster committed Aug 5, 2020
2 parents ff7162e + 40c5f27 commit 14b003b
Show file tree
Hide file tree
Showing 6 changed files with 183 additions and 59 deletions.
14 changes: 12 additions & 2 deletions lib/remote/services/user_service.chopper.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions lib/remote/services/user_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ abstract class UserService extends ChopperService {
@Get(path: "user")
Future<Response<Map<String, dynamic>>> getCurrentUser();

/// Returns the searched Name ist
@Get(path: "users/verified")
Future<Response<List<dynamic>>> getSearchNames({
@Query("search") String search,
});

/// Returns a specified user's public profile of the system
@Get(path: "user/{userId}")
Future<Response<Map<String, dynamic>>> getUser(@Path("userId") int userId);
Expand Down
82 changes: 48 additions & 34 deletions lib/screens/home/pages/members/members_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:mentorship_client/remote/models/user.dart';
import 'package:mentorship_client/screens/home/pages/members/bloc/bloc.dart';
import 'package:mentorship_client/screens/home/pages/members/widgets/member_list_tile.dart';
import 'package:mentorship_client/screens/home/pages/search/search_page.dart';
import 'package:mentorship_client/screens/member_profile/member_profile.dart';

class MembersPage extends StatefulWidget {
Expand Down Expand Up @@ -35,46 +36,59 @@ class _MembersPageState extends State<MembersPage> {
_refreshCompleter = Completer();
}
}, builder: (context, state) {
return BlocBuilder<MembersPageBloc, MembersPageState>(
builder: (context, state) {
if (state is MembersPageFailure) {
return Center(
child: Text('Failed to get users'),
);
}
if (state is MembersPageSuccess) {
if (state.users.isEmpty) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: () => Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => SearchPage(),
),
),
child: Icon(
Icons.search,
color: Colors.white,
),
),
body: BlocBuilder<MembersPageBloc, MembersPageState>(
builder: (context, state) {
if (state is MembersPageFailure) {
return Center(
child: Text('No users'),
child: Text('Failed to get users'),
);
}
return RefreshIndicator(
onRefresh: () {
BlocProvider.of<MembersPageBloc>(context).add(
MembersPageRefresh(),
if (state is MembersPageSuccess) {
if (state.users.isEmpty) {
return Center(
child: Text('No users'),
);
return _refreshCompleter.future;
},
child: ListView.builder(
itemBuilder: (BuildContext context, int index) {
bool _reachedEnd = index > state.users.length - 1;
User user = (!_reachedEnd) ? state.users[index] : null;
return _reachedEnd
? BottomLoader()
: InkWell(
onTap: () => _openMemberProfileScreen(context, user),
child: MemberListTile(user: user),
);
}
return RefreshIndicator(
onRefresh: () {
BlocProvider.of<MembersPageBloc>(context).add(
MembersPageRefresh(),
);
return _refreshCompleter.future;
},
itemCount: state.hasReachedMax ? (state.users.length) : (state.users.length + 1),
controller: _scrollController,
),
child: ListView.builder(
itemBuilder: (BuildContext context, int index) {
bool _reachedEnd = index > state.users.length - 1;
User user = (!_reachedEnd) ? state.users[index] : null;
return _reachedEnd
? BottomLoader()
: InkWell(
onTap: () => _openMemberProfileScreen(context, user),
child: MemberListTile(user: user),
);
},
itemCount: state.hasReachedMax ? (state.users.length) : (state.users.length + 1),
controller: _scrollController,
),
);
}
return Center(
child: CircularProgressIndicator(),
);
}
return Center(
child: CircularProgressIndicator(),
);
},
},
),
);
});
}
Expand Down
64 changes: 64 additions & 0 deletions lib/screens/home/pages/search/search_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import 'package:flappy_search_bar/flappy_search_bar.dart';
import 'package:flutter/material.dart';
import 'package:mentorship_client/remote/api_manager.dart';
import 'package:mentorship_client/remote/models/user.dart';
import 'package:mentorship_client/screens/member_profile/member_profile.dart';
import 'package:mentorship_client/widgets/loading_indicator.dart';

class SearchPage extends StatelessWidget {
final SearchBarController<User> _searchBarController = SearchBarController();
Future<List<User>> getSearchNames(String search) async {
final body = await ApiManager.callSafely(
() => ApiManager.instance.userService.getSearchNames(search: search));
List<User> users = [];

for (var user in body) {
users.add(User.fromJson(user));
}
return users;
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: SearchBar<User>(
iconActiveColor: Theme.of(context).primaryColor,
searchBarPadding: EdgeInsets.symmetric(horizontal: 10),
searchBarController: _searchBarController,
hintText: "Start typing",
placeHolder: Center(
child: Text("Enter atleast 3 letters"),
),
emptyWidget: Center(
child: Text("No users found"),
),
onSearch: getSearchNames,
minimumChars: 3,
loader: LoadingIndicator(),
onItemFound: (User user, int index) {
return Container(
child: ListTile(
leading: Icon(
Icons.person,
size: 36,
color: Theme.of(context).primaryColor,
),
title: Text(user.name),
isThreeLine: true,
subtitle: Text(user.username),
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => MemberProfileScreen(user: user),
),
);
},
),
);
},
),
),
);
}
}
56 changes: 42 additions & 14 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ packages:
name: _fe_analyzer_shared
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
version: "6.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
url: "https://pub.dartlang.org"
source: hosted
version: "0.39.7"
version: "0.39.15"
archive:
dependency: transitive
description:
Expand Down Expand Up @@ -63,14 +63,14 @@ packages:
name: bottom_navy_bar
url: "https://pub.dartlang.org"
source: hosted
version: "5.4.0"
version: "5.5.0"
build:
dependency: transitive
description:
name: build
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.2"
version: "1.3.0"
build_config:
dependency: transitive
description:
Expand All @@ -91,21 +91,21 @@ packages:
name: build_resolvers
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.5"
version: "1.3.10"
build_runner:
dependency: "direct dev"
description:
name: build_runner
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.0"
version: "1.10.0"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
version: "5.2.0"
built_collection:
dependency: transitive
description:
Expand Down Expand Up @@ -140,14 +140,21 @@ packages:
name: chopper
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
version: "3.0.3"
chopper_generator:
dependency: "direct dev"
description:
name: chopper_generator
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.4"
version: "3.0.5"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.4"
clock:
dependency: transitive
description:
Expand Down Expand Up @@ -210,14 +217,14 @@ packages:
name: dart_style
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.4"
version: "1.3.6"
equatable:
dependency: "direct main"
description:
name: equatable
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
version: "1.2.3"
expandable:
dependency: "direct main"
description:
Expand All @@ -239,6 +246,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.10.11"
flappy_search_bar:
dependency: "direct main"
description:
name: flappy_search_bar
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.2"
flutter:
dependency: "direct main"
description: flutter
Expand All @@ -250,7 +264,7 @@ packages:
name: flutter_bloc
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
version: "4.0.1"
flutter_native_splash:
dependency: "direct dev"
description:
Expand All @@ -265,6 +279,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.3"
flutter_staggered_grid_view:
dependency: transitive
description:
name: flutter_staggered_grid_view
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.1"
flutter_test:
dependency: "direct dev"
description: flutter
Expand Down Expand Up @@ -414,7 +435,7 @@ packages:
name: package_info
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0+17"
version: "0.4.1"
path:
dependency: transitive
description:
Expand Down Expand Up @@ -587,7 +608,14 @@ packages:
name: url_launcher
url: "https://pub.dartlang.org"
source: hosted
version: "5.4.10"
version: "5.5.0"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.1+1"
url_launcher_macos:
dependency: transitive
description:
Expand Down

0 comments on commit 14b003b

Please sign in to comment.