chat structure issues.

merge-requests/70/head
Sikander Saleem 3 years ago
parent ce0de886c6
commit ccb89584e2

@ -17,6 +17,7 @@ class MyColors {
static const Color greyF7Color = Color(0xffF7F7F7); static const Color greyF7Color = Color(0xffF7F7F7);
static const Color grey80Color = Color(0xff808080); static const Color grey80Color = Color(0xff808080);
static const Color grey70Color = Color(0xff707070); static const Color grey70Color = Color(0xff707070);
static const Color grey7BColor = Color(0xff7B7B7B);
static const Color greyACColor = Color(0xffACACAC); static const Color greyACColor = Color(0xffACACAC);
static const Color grey98Color = Color(0xff989898); static const Color grey98Color = Color(0xff989898);
static const Color lightGreyEFColor = Color(0xffEFEFEF); static const Color lightGreyEFColor = Color(0xffEFEFEF);

@ -1,7 +1,7 @@
class ApiConsts { class ApiConsts {
//static String baseUrl = "http://10.200.204.20:2801/"; // Local server //static String baseUrl = "http://10.200.204.20:2801/"; // Local server
static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server // static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
//static String baseUrl = "https://hmgwebservices.com"; // Live server static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrlServices = baseUrl + "/Services/"; // server static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server // static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/"; static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";
@ -10,10 +10,12 @@ class ApiConsts {
static String user = baseUrlServices + "api/User/"; static String user = baseUrlServices + "api/User/";
static String cocRest = baseUrlServices + "COCWS.svc/REST/"; static String cocRest = baseUrlServices + "COCWS.svc/REST/";
// todo @aamir move api end point last repo to concerned method.
//Chat //Chat
static String chatServerBaseUrl = "https://apiderichat.hmg.com"; static String chatServerBaseUrl = "https://apiderichat.hmg.com/";
static String chatServerBaseApiUrl = "https://apiderichat.hmg.com/api/"; static String chatServerBaseApiUrl = chatServerBaseUrl + "api/";
static String chatHubConnectionUrl = chatServerBaseUrl + "/ConnectionChatHub"; static String chatHubConnectionUrl = chatServerBaseUrl + "ConnectionChatHub";
static String chatSearchMember = "user/getUserWithStatusAndFavAsync/"; static String chatSearchMember = "user/getUserWithStatusAndFavAsync/";
static String chatRecentUrl = "UserChatHistory/getchathistorybyuserid"; //For a Mem static String chatRecentUrl = "UserChatHistory/getchathistorybyuserid"; //For a Mem
static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory"; static String chatSingleUserHistoryUrl = "UserChatHistory/GetUserChatHistory";

@ -29,6 +29,8 @@ class ChatBubble extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return isCurrentUser ? currentUser(context) : receiptUser(context);
return Padding( return Padding(
// padding: EdgeInsets.zero, // padding: EdgeInsets.zero,
padding: EdgeInsets.only( padding: EdgeInsets.only(
@ -148,4 +150,58 @@ class ChatBubble extends StatelessWidget {
), ),
); );
} }
Widget currentUser(context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
(text).toText12(),
Align(
alignment: Alignment.centerRight,
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
dateTime.toText10(color: MyColors.grey41Color.withOpacity(.5)),
7.width,
Icon(
isDelivered ? Icons.done_all : Icons.done_all,
color: isSeen ? MyColors.textMixColor : MyColors.grey9DColor,
size: 14,
),
],
),
),
],
).paddingOnly(top: 11, left: 13, right: 7, bottom: 5).objectContainerView(disablePadding: true).paddingOnly(left: MediaQuery.of(context).size.width * 0.3);
}
Widget receiptUser(context) {
return Container(
padding: const EdgeInsets.only(top: 11, left: 13, right: 7, bottom: 5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
gradient: const LinearGradient(
transform: GradientRotation(.83),
begin: Alignment.topRight,
end: Alignment.bottomLeft,
colors: <Color>[
MyColors.gradiantEndColor,
MyColors.gradiantStartColor,
],
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
(text).toText12(color: Colors.white),
Align(
alignment: Alignment.centerRight,
child: dateTime.toText10(
color: Colors.white.withOpacity(.71),
),
),
],
),
).paddingOnly(right: MediaQuery.of(context).size.width * 0.3);
}
} }

@ -1,18 +1,16 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/main.dart';
import 'package:mohem_flutter_app/models/chat/call.dart'; import 'package:mohem_flutter_app/models/chat/call.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart'; import 'package:mohem_flutter_app/ui/chat/call/chat_outgoing_call_screen.dart';
import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart'; import 'package:mohem_flutter_app/ui/chat/chat_bubble.dart';
import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart'; import 'package:mohem_flutter_app/ui/landing/dashboard_screen.dart';
@ -49,9 +47,7 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
} }
} }
await Future.delayed( await Future.delayed(
const Duration( const Duration(milliseconds: 1000),
milliseconds: 1000,
),
); );
_rc.loadComplete(); _rc.loadComplete();
} }
@ -71,48 +67,34 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
return Scaffold( return Scaffold(
backgroundColor: MyColors.backgroundColor, backgroundColor: MyColors.backgroundColor,
appBar: AppBarWidget(context, appBar: AppBarWidget(
context,
title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach, title: userDetails["targetUser"].userName.toString().replaceAll(".", " ").capitalizeFirstofEach,
showHomeButton: false, showHomeButton: false,
image: userDetails["targetUser"].image, image: userDetails["targetUser"].image,
actions: [ actions: [
IconButton( IconButton(
onPressed: () { onPressed: () {
makeCall( makeCall(callType: "AUDIO", con: hubConnection);
callType: "AUDIO",
con: hubConnection,
);
}, },
icon: SvgPicture.asset( icon: SvgPicture.asset("assets/icons/chat/call.svg", width: 22, height: 22),
"assets/icons/chat/call.svg",
width: 22,
height: 22,
),
), ),
IconButton( IconButton(
onPressed: () { onPressed: () {
makeCall( makeCall(callType: "VIDEO", con: hubConnection);
callType: "VIDEO",
con: hubConnection,
);
}, },
icon: SvgPicture.asset( icon: SvgPicture.asset("assets/icons/chat/video_call.svg", width: 20, height: 20),
"assets/icons/chat/video_call.svg",
width: 20,
height: 20,
),
), ),
10.width, 10.width,
]), ],
),
body: Consumer<ChatProviderModel>( body: Consumer<ChatProviderModel>(
builder: (BuildContext context, ChatProviderModel m, Widget? child) { builder: (BuildContext context, ChatProviderModel m, Widget? child) {
return (m.isLoading return (m.isLoading
? ChatHomeShimmer() ? ChatHomeShimmer()
: Column( : Column(
children: <Widget>[ children: <Widget>[
Expanded( SmartRefresher(
flex: 2,
child: SmartRefresher(
enablePullDown: false, enablePullDown: false,
enablePullUp: true, enablePullUp: true,
onLoading: () { onLoading: () {
@ -123,13 +105,14 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
), ),
controller: _rc, controller: _rc,
reverse: true, reverse: true,
child: ListView.builder( child: ListView.separated(
controller: m.scrollController, controller: m.scrollController,
shrinkWrap: true, shrinkWrap: true,
physics: const BouncingScrollPhysics(), physics: const BouncingScrollPhysics(),
reverse: true, reverse: true,
itemCount: m.userChatHistory.length, itemCount: m.userChatHistory.length,
padding: const EdgeInsets.only(top: 20), padding: const EdgeInsets.all(21),
separatorBuilder: (cxt, index) => 8.height,
itemBuilder: (BuildContext context, int i) { itemBuilder: (BuildContext context, int i) {
return SwipeTo( return SwipeTo(
iconColor: MyColors.lightGreenColor, iconColor: MyColors.lightGreenColor,
@ -151,124 +134,51 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
); );
}, },
), ),
), ).expanded,
),
if (m.isMsgReply) if (m.isMsgReply)
Row( SizedBox(
height: 82,
child: Row(
children: <Widget>[ children: <Widget>[
Container(height: 82, color: MyColors.textMixColor, width: 6),
Container( Container(
height: 80, color: MyColors.darkTextColor.withOpacity(0.10),
color: MyColors.textMixColor, padding: const EdgeInsets.only(top: 11, left: 14, bottom: 14, right: 21),
width: 6, child: Row(
), children: [
Expanded( Column(
child: Container( crossAxisAlignment: CrossAxisAlignment.start,
height: 80, children: [
color: MyColors.black.withOpacity(0.10), (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString()
child: ListTile(
title: (AppState().chatDetails!.response!.userName == m.repliedMsg.first.currentUserName.toString()
? "You" ? "You"
: m.repliedMsg.first.currentUserName.toString().replaceAll(".", " ")) : m.repliedMsg.first.currentUserName.toString().replaceAll(".", " "))
.toText14(color: MyColors.lightGreenColor), .toText14(color: MyColors.lightGreenColor),
subtitle: (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12( (m.repliedMsg.isNotEmpty ? m.repliedMsg.first.contant! : "").toText12(color: MyColors.grey71Color, maxLine: 2)
color: MyColors.white, ],
maxLine: 2, ).expanded,
), 12.width,
trailing: GestureDetector( const Icon(Icons.cancel, size: 23, color: MyColors.grey7BColor).onPress(m.closeMe),
onTap: m.closeMe,
child: Container(
decoration: BoxDecoration(
color: MyColors.white.withOpacity(0.5),
borderRadius: const BorderRadius.all(
Radius.circular(20),
),
),
child: const Icon(
Icons.close,
size: 23,
color: MyColors.white,
),
),
),
),
),
),
], ],
), ),
if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg") ).expanded,
Card( ],
margin: EdgeInsets.zero,
elevation: 0,
child: Padding(
padding: const EdgeInsets.only(
left: 20,
right: 20,
top: 20,
bottom: 0,
),
child: Card(
margin: EdgeInsets.zero,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(0),
),
elevation: 0,
child: Container(
height: 200,
decoration: BoxDecoration(
image: DecorationImage(
image: FileImage(
m.selectedFile,
),
fit: BoxFit.cover,
),
borderRadius: const BorderRadius.all(
Radius.circular(0),
),
),
child: const SizedBox(
width: double.infinity,
height: 200,
),
),
),
), ),
), ),
Card( if (m.isFileSelected && m.sFileType == ".png" || m.sFileType == ".jpeg" || m.sFileType == ".jpg")
margin: EdgeInsets.zero, SizedBox(height: 200, width: double.infinity, child: Image.file(m.selectedFile, fit: BoxFit.cover)).paddingOnly(left: 21, right: 21, top: 21),
child: TextField( TextField(
controller: m.message, controller: m.message,
decoration: InputDecoration( decoration: InputDecoration(
hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(), hintText: m.isFileSelected ? m.selectedFile.path.split("/").last : LocaleKeys.typeheretoreply.tr(),
hintStyle: TextStyle( hintStyle: TextStyle(color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color, fontSize: 14),
color: m.isFileSelected ? MyColors.darkTextColor : MyColors.grey98Color,
fontSize: 14,
),
border: InputBorder.none, border: InputBorder.none,
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
errorBorder: InputBorder.none, errorBorder: InputBorder.none,
disabledBorder: InputBorder.none, disabledBorder: InputBorder.none,
contentPadding: EdgeInsets.only( contentPadding: EdgeInsets.only(left: m.sFileType.isNotEmpty ? 10 : 20, right: m.sFileType.isNotEmpty ? 0 : 5, top: 20, bottom: 20),
left: m.sFileType.isNotEmpty ? 10 : 20, prefixIconConstraints: BoxConstraints(),
right: m.sFileType.isNotEmpty ? 0 : 5, prefixIcon: m.sFileType.isNotEmpty ? SvgPicture.asset(m.getType(m.sFileType), height: 30, width: 22, alignment: Alignment.center, fit: BoxFit.cover) : null,
top: 20,
bottom: 20,
),
prefixIcon: m.sFileType.isNotEmpty
? Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
SvgPicture.asset(
m.getType(m.sFileType),
height: 30,
width: 25,
alignment: Alignment.center,
fit: BoxFit.cover,
).paddingOnly(left: 20),
],
)
: null,
suffixIcon: SizedBox( suffixIcon: SizedBox(
width: 96, width: 96,
child: Row( child: Row(
@ -291,19 +201,9 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
Radius.circular(20), Radius.circular(20),
), ),
), ),
child: const Icon( child: const Icon(Icons.close, size: 15, color: MyColors.white),
Icons.close,
size: 15,
color: MyColors.white,
),
),
("Clear")
.toText11(
color: MyColors.redA3Color,
)
.paddingOnly(
left: 4,
), ),
("Clear").toText11(color: MyColors.redA3Color).paddingOnly(left: 4),
], ],
), ),
onPressed: () async { onPressed: () async {
@ -316,11 +216,7 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
child: IconButton( child: IconButton(
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
alignment: Alignment.topRight, alignment: Alignment.topRight,
icon: const Icon( icon: const Icon(Icons.attach_file_rounded, size: 26, color: MyColors.grey3AColor),
Icons.attach_file_rounded,
size: 26,
color: MyColors.grey3AColor,
),
onPressed: () async { onPressed: () async {
m.selectImageToUpload(context); m.selectImageToUpload(context);
}, },
@ -329,25 +225,14 @@ class _ChatDetailScreenState extends State<ChatDetailScreen> {
IconButton( IconButton(
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
icon: SvgPicture.asset( icon: SvgPicture.asset("assets/icons/chat/chat_send_icon.svg", height: 26, width: 26),
"assets/icons/chat/chat_send_icon.svg",
height: 26,
width: 26,
),
onPressed: () { onPressed: () {
m.sendChatMessage( m.sendChatMessage(userDetails["targetUser"].id, userDetails["targetUser"].userName, context);
userDetails["targetUser"].id,
userDetails["targetUser"].userName,
context,
);
}, },
) )
], ],
), ),
).paddingOnly( ).paddingOnly(right: 20),
right: 20,
),
),
), ),
), ),
], ],

@ -1,19 +1,13 @@
import 'dart:convert';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart'; import 'package:mohem_flutter_app/ui/chat/chat_home_screen.dart';
import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart'; import 'package:mohem_flutter_app/ui/chat/favorite_users_screen.dart';
import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/items_for_sale.dart';
import 'package:mohem_flutter_app/ui/screens/items_for_sale/fragments/my_posted_ads_fragment.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -45,11 +39,7 @@ class _ChatHomeState extends State<ChatHome> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
backgroundColor: MyColors.white, backgroundColor: MyColors.white,
appBar: AppBarWidget( appBar: AppBarWidget(context, title: LocaleKeys.chat.tr(), showHomeButton: true),
context,
title: LocaleKeys.chat.tr(),
showHomeButton: true,
),
body: Column( body: Column(
children: <Widget>[ children: <Widget>[
Container( Container(

@ -2,13 +2,13 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/provider/chat_provider_model.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart';
import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart'; import 'package:mohem_flutter_app/widgets/shimmer/dashboard_shimmer_widget.dart';
@ -51,50 +51,30 @@ class _ChatHomeScreenState extends State<ChatHomeScreen> {
physics: const AlwaysScrollableScrollPhysics(), physics: const AlwaysScrollableScrollPhysics(),
children: <Widget>[ children: <Widget>[
Padding( Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 20),
vertical: 20,
horizontal: 20,
),
child: TextField( child: TextField(
controller: m.search, controller: m.search,
style: const TextStyle(color: MyColors.darkTextColor, fontWeight: FontWeight.w500, fontSize: 12),
onChanged: (String val) { onChanged: (String val) {
m.filter(val); m.filter(val);
}, },
decoration: InputDecoration( decoration: InputDecoration(
border: fieldBorder( border: fieldBorder(radius: 5, color: 0xFFE5E5E5),
radius: 5, focusedBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5),
color: 0xFFE5E5E5, enabledBorder: fieldBorder(radius: 5, color: 0xFFE5E5E5),
), contentPadding: const EdgeInsets.all(11),
focusedBorder: fieldBorder(
radius: 5,
color: 0xFFE5E5E5,
),
enabledBorder: fieldBorder(
radius: 5,
color: 0xFFE5E5E5,
),
contentPadding: const EdgeInsets.symmetric(
horizontal: 15,
vertical: 10,
),
hintText: LocaleKeys.searchfromchat.tr(), hintText: LocaleKeys.searchfromchat.tr(),
hintStyle: const TextStyle( hintStyle: const TextStyle(color: MyColors.lightTextColor, fontStyle: FontStyle.italic, fontWeight: FontWeight.w500, fontSize: 12),
color: MyColors.lightTextColor,
fontStyle: FontStyle.italic,
),
filled: true, filled: true,
fillColor: const Color( fillColor: const Color(0xFFF7F7F7),
0xFFF7F7F7, suffixIconConstraints: const BoxConstraints(),
),
suffixIcon: m.search.text.isNotEmpty suffixIcon: m.search.text.isNotEmpty
? IconButton( ? IconButton(
constraints: const BoxConstraints(),
onPressed: () { onPressed: () {
m.clearSelections(); m.clearSelections();
}, },
icon: const Icon( icon: const Icon(Icons.clear, size: 22),
Icons.clear,
size: 22,
),
color: MyColors.redA3Color, color: MyColors.redA3Color,
) )
: null, : null,
@ -103,15 +83,15 @@ class _ChatHomeScreenState extends State<ChatHomeScreen> {
), ),
if (m.searchedChats != null) if (m.searchedChats != null)
ListView.separated( ListView.separated(
itemCount: m.searchedChats!.length, itemCount: m.searchedChats!.length + 20,
padding: const EdgeInsets.only( padding: const EdgeInsets.only(bottom: 80),
bottom: 80,
),
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
index = 0;
return SizedBox( return SizedBox(
height: 55, height: 55,
// todo @aamir, remove list tile, make a custom ui instead
child: ListTile( child: ListTile(
leading: Stack( leading: Stack(
children: <Widget>[ children: <Widget>[

Loading…
Cancel
Save