Untitled
unknown
dart
4 years ago
11 kB
7
Indexable
Widget messageDialogWidget() {
double width = Constant.width * 0.35;
double height = Constant.height * 0.8;
return Stack(
children: [
Align(
alignment: Alignment.center,
child: Container(
width: Constant.width * 0.1,
height: Constant.width * 0.1,
decoration: const BoxDecoration(
image: DecorationImage(
opacity: 0.75,
fit: BoxFit.fitWidth,
image: AssetImage("assets/images/logopars.png")),
borderRadius: BorderRadius.all(Radius.circular(20))),
),
),
Positioned(
top: 0,
bottom: height * 0.15,
width: width,
child: RefreshConfiguration(
child: SmartRefresher(
enablePullDown: false,
enablePullUp: true,
footer: CustomFooter(
builder: (BuildContext context, LoadStatus mode) {
Widget body;
if (mode == LoadStatus.idle) {
body =
Text("Daha fazla yüklemek için yukarı doğru kaydırın",
style: TextStyle(
color: Colors.amber,
));
} else if (mode == LoadStatus.loading) {
body = CircularProgressIndicator();
} else if (mode == LoadStatus.failed) {
body = Text("Yüklenirken hata oluştu",
style: TextStyle(
color: Colors.amber,
));
} else if (mode == LoadStatus.canLoading) {
body = Text("Daha fazla yüklemek için serbest bırakın.",
style: TextStyle(
color: Colors.amber,
));
} else {
body = Text("Yüklenecek veri bulunamadı.",
style: TextStyle(
color: Colors.amber,
));
}
return Container(
height: 55.0,
child: Center(child: body),
);
},
),
controller: _refreshController,
onLoading: _onLoadingMessage,
child: ListView.builder(
key: UniqueKey(),
scrollDirection: Axis.vertical,
shrinkWrap: true,
reverse: true,
cacheExtent: 1000,
itemCount: MessageModel.messages.length,
itemBuilder: (BuildContext context, int index) {
var message = MessageModel.messages[index];
return (message.sender == Constant.driverInfoModel.sId)
? ChatBubble(
clipper:
ChatBubbleClipper4(type: BubbleType.sendBubble),
alignment: Alignment.topRight,
margin: EdgeInsets.only(top: 5, bottom: 5),
backGroundColor: Colors.yellow[100],
child: Container(
constraints: BoxConstraints(maxWidth: width * 0.7),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
DateFormat('dd/MM/yyy - kk:mm').format(
DateTime.fromMillisecondsSinceEpoch(
message.timeStamp
.toLocal()
.millisecondsSinceEpoch)),
style: TextStyle(
color: Colors.grey, fontSize: 15)),
Padding(
padding:
const EdgeInsets.only(top: 5, bottom: 5),
child: Text(message.message,
style: TextStyle(
color: Colors.black, fontSize: 20)),
)
],
),
),
)
: ChatBubble(
clipper: ChatBubbleClipper4(
type: BubbleType.receiverBubble),
alignment: Alignment.topLeft,
margin: EdgeInsets.only(top: 3, bottom: 3),
backGroundColor: Colors.grey[100],
child: Container(
constraints: BoxConstraints(maxWidth: width * 0.7),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'$customerName @${DateFormat('dd/MM/yyy - kk:mm').format(DateTime.fromMillisecondsSinceEpoch(message.timeStamp.toLocal().millisecondsSinceEpoch))}',
style: TextStyle(
color: Colors.grey, fontSize: 15)),
Padding(
padding:
const EdgeInsets.only(top: 3, bottom: 3),
child: Text(message.message,
style: TextStyle(
color: Colors.black, fontSize: 20)),
)
],
),
),
);
},
),
),
),
),
Align(
alignment: Alignment.bottomCenter,
child: Container(
height: height * 0.15,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
bottomLeft: Radius.circular(40),
bottomRight: Radius.circular(40),
),
),
padding: EdgeInsets.only(
bottom: height * 0.02,
left: width * 0.05,
top: height * 0.02,
right: width * 0.01),
child: Row(
children: [
Expanded(
flex: 8,
child: FocusScope(
child: Focus(
onFocusChange: (value) {
setState(() {
(isFocusOn) ? isFocusOn = false : isFocusOn = true;
});
},
child: customerID == Constant.currentCustomerID
? Padding(
padding: EdgeInsets.only(left: width * 0.045),
child: TextFormField(
enabled: onDuty &&
Constant.currentCustomerID == customerID,
controller: messageController,
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(40)),
),
onChanged: (value) {
if (value == "") {
setState(() {});
} else if (value.length == 1) {
setState(() {});
}
},
),
)
: Padding(
padding: EdgeInsets.only(left: width * 0.045),
child: Container(
height: Constant.height,
decoration: BoxDecoration(
color: Colors.grey[300],
border: Border.all(
width: 1, color: Colors.grey[400]),
borderRadius: BorderRadius.circular(30),
),
child: Center(
child: Padding(
padding: EdgeInsets.only(
left: width * 0.040,
right: width * 0.025),
child: AutoSizeText(
"Sadece aktif seyahatinizdeki müşteriyle iletişime geçebilirsiniz",
maxLines: 2,
style: TextStyle(
fontSize: 100,
fontStyle: FontStyle.italic,
color: Colors.grey[700],
),
),
),
),
),
),
),
),
),
Expanded(
flex: 2,
child: FittedBox(
fit: BoxFit.cover,
child: IconButton(
color: Colors.blue[900],
icon: Icon(Icons.send),
onPressed: (messageController.text.isNotEmpty) &&
onDuty &&
Constant.currentCustomerID == customerID
? () {
print(messageController.text);
_sendMessage();
}
: null,
),
),
)
],
),
)),
],
);
}Editor is loading...