|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
|
|
import 'package:carousel_slider/carousel_slider.dart';
|
|
|
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
|
|
|
import 'package:diplomaticquarterapp/pages/pharmacies/compare-list.dart';
|
|
|
|
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyProduct.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
|
|
|
int counter = 0;
|
|
|
|
|
|
|
|
class ComparePage extends StatefulWidget {
|
|
|
|
@override
|
|
|
|
_ComparePageState createState() => _ComparePageState();
|
|
|
|
}
|
|
|
|
|
|
|
|
//CompareList compareItems = CompareList();
|
|
|
|
class _ComparePageState extends State<ComparePage> {
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return AppScaffold(
|
|
|
|
appBarTitle: 'Reviews page',
|
|
|
|
isShowAppBar: true,
|
|
|
|
isPharmacy: true,
|
|
|
|
body: Container(
|
|
|
|
child: compareList(),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class compareList extends StatelessWidget {
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
final productItemData = Provider.of<CompareList>(context);
|
|
|
|
final productItem = productItemData.productListItems;
|
|
|
|
return productItem.length == 0
|
|
|
|
? Container(
|
|
|
|
child: Center(
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Padding(
|
|
|
|
padding: const EdgeInsets.all(8.0),
|
|
|
|
child: Image.asset(
|
|
|
|
'assets/images/new-design/empty_box.png',
|
|
|
|
width: 100,
|
|
|
|
height: 100,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: const EdgeInsets.all(8.0),
|
|
|
|
child: Text(
|
|
|
|
'There is no data',
|
|
|
|
style: TextStyle(fontSize: 30),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
: CarouselSlider(
|
|
|
|
options: CarouselOptions(
|
|
|
|
height: 800.0,
|
|
|
|
viewportFraction: 0.87,
|
|
|
|
enableInfiniteScroll: false),
|
|
|
|
items: productItem.map((i) {
|
|
|
|
return Builder(
|
|
|
|
builder: (BuildContext context) {
|
|
|
|
return Padding(
|
|
|
|
padding: const EdgeInsets.only(top: 8),
|
|
|
|
child: Container(
|
|
|
|
width: MediaQuery.of(context).size.width,
|
|
|
|
margin: EdgeInsets.symmetric(horizontal: 10.0),
|
|
|
|
child: productItem.length != 0
|
|
|
|
? slideDetail(productItem)
|
|
|
|
: Container(),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
},
|
|
|
|
);
|
|
|
|
}).toList(),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class slideDetail extends StatefulWidget {
|
|
|
|
final List<PharmacyProduct> data;
|
|
|
|
|
|
|
|
slideDetail(this.data);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_slideDetailState createState() => _slideDetailState();
|
|
|
|
}
|
|
|
|
|
|
|
|
class _slideDetailState extends State<slideDetail> {
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return ListView.builder(
|
|
|
|
scrollDirection: Axis.horizontal,
|
|
|
|
itemCount: widget.data.length,
|
|
|
|
itemBuilder: (BuildContext contx, int index) {
|
|
|
|
return Row(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 550,
|
|
|
|
width: 150,
|
|
|
|
margin: EdgeInsets.symmetric(horizontal: 10.0),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(10),
|
|
|
|
border: Border(
|
|
|
|
top: BorderSide(width: 0.5, color: Colors.grey),
|
|
|
|
left: BorderSide(width: 0.5, color: Colors.grey),
|
|
|
|
right: BorderSide(width: 0.5, color: Colors.grey),
|
|
|
|
bottom: BorderSide(width: 0.5, color: Colors.grey),
|
|
|
|
),
|
|
|
|
color: Colors.white),
|
|
|
|
child: Padding(
|
|
|
|
padding: const EdgeInsets.all(8.0),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topRight,
|
|
|
|
child: IconButton(
|
|
|
|
icon: Icon(FontAwesomeIcons.trashAlt, size: 15),
|
|
|
|
onPressed: () {
|
|
|
|
setState(() {
|
|
|
|
Provider.of<CompareList>(context, listen: false)
|
|
|
|
.deleteItem(widget.data[index].id);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
height: 20,
|
|
|
|
),
|
|
|
|
Image.network(
|
|
|
|
widget.data[index].images[0].src.trim(),
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
width: 100,
|
|
|
|
height: 60,
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(top: 8.0),
|
|
|
|
child: Container(
|
|
|
|
height: 1.0,
|
|
|
|
width: 300.0,
|
|
|
|
color: Colors.grey,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text: widget.data[index].name,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: Colors.black,
|
|
|
|
fontSize: 13),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text: widget.data[index].price.toString(),
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.black54,
|
|
|
|
fontSize: 15,
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(top: 8.0),
|
|
|
|
child: Container(
|
|
|
|
height: 1.0,
|
|
|
|
width: 300.0,
|
|
|
|
color: Colors.grey,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text: widget.data[index].specifications != null ?
|
|
|
|
widget.data[index].specifications[0].name :
|
|
|
|
"No data",
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: Colors.black,
|
|
|
|
fontSize: 13),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text: widget.data[index].specifications != null ?
|
|
|
|
widget.data[index].specifications[1].name :
|
|
|
|
"No data",
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.black54,
|
|
|
|
fontSize: 15,
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(top: 8.0),
|
|
|
|
child: Container(
|
|
|
|
height: 1.0,
|
|
|
|
width: 300.0,
|
|
|
|
color: Colors.grey,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text:widget.data[index].specifications != null ?
|
|
|
|
widget.data[index].specifications[2].name :
|
|
|
|
"No data",
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: Colors.black,
|
|
|
|
fontSize: 13),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text: widget.data[index].specifications != null ?
|
|
|
|
widget.data[index].specifications[3].name :
|
|
|
|
"No data",
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.black54,
|
|
|
|
fontSize: 15,
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(top: 8.0),
|
|
|
|
child: Container(
|
|
|
|
height: 1.0,
|
|
|
|
width: 300.0,
|
|
|
|
color: Colors.grey,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text:widget.data[index].specifications != null ?
|
|
|
|
widget.data[index].specifications[4].name :
|
|
|
|
"No data",
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
color: Colors.black,
|
|
|
|
fontSize: 13),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.all(5),
|
|
|
|
child: Align(
|
|
|
|
alignment: Alignment.topLeft,
|
|
|
|
child: RichText(
|
|
|
|
text: TextSpan(
|
|
|
|
text:widget.data[index].specifications != null ?
|
|
|
|
widget.data[index].specifications[5].name :
|
|
|
|
"No data",
|
|
|
|
style: TextStyle(
|
|
|
|
color: Colors.black54,
|
|
|
|
fontSize: 15,
|
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.only(top: 8.0),
|
|
|
|
child: Container(
|
|
|
|
height: 1.0,
|
|
|
|
width: 300.0,
|
|
|
|
color: Colors.grey,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
);
|
|
|
|
},
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String returnString(data) {
|
|
|
|
for (int i = 0; i < data.length; i++) {
|
|
|
|
print(data[i]);
|
|
|
|
// if(data[i] == null){
|
|
|
|
// if(counter == i){
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
return "ENAD HILAL";
|
|
|
|
}
|