import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:tangheem/classes/colors.dart'; import 'package:tangheem/classes/utils.dart'; import 'package:tangheem/extensions/int_extensions.dart'; import 'package:tangheem/extensions/string_extensions.dart'; import 'package:tangheem/extensions/widget_extensions.dart'; import 'package:tangheem/models/bookmark_model.dart'; import 'package:tangheem/models/surah_model.dart'; import 'package:tangheem/ui/misc/no_data_ui.dart'; import 'package:tangheem/ui/screens/quran_screen.dart'; class BookmarkScreen extends StatefulWidget { static const String routeName = "/bookmark"; final String tangheemQuery; final String tangheemTypeName; final SurahModelData surah; BookmarkScreen({Key key, this.surah, this.tangheemQuery, this.tangheemTypeName}) : super(key: key); @override _BookmarkScreenState createState() { return _BookmarkScreenState(); } } class _BookmarkScreenState extends State { List _bookMarkList = []; SlidableController _slidableController; @override void initState() { _slidableController = SlidableController( onSlideAnimationChanged: handleSlideAnimationChanged, onSlideIsOpenChanged: handleSlideIsOpenChanged, ); super.initState(); getBookMark(); } void handleSlideAnimationChanged(Animation slideAnimation) {} void handleSlideIsOpenChanged(bool isOpen) {} void getBookMark() async { Utils.showLoading(context); _bookMarkList = await BookMarkModel.getFromPrefs(); _bookMarkList = _bookMarkList.reversed.toList(); Utils.hideLoading(context); setState(() {}); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { return Stack( children: [ Stack( alignment: Alignment.center, children: [ AspectRatio( aspectRatio: 375 / 215, child: Image.asset("assets/icons/new/quran_bg.jpg", fit: BoxFit.cover, alignment: Alignment(-0.3, 0.5)), ), Column( mainAxisSize: MainAxisSize.min, children: [ Image.asset('assets/icons/new/Tangeem-logo-W.png', width: 50), 26.height, "المرجعية".toText(30), ], ).paddingOnly(top: 16), ], ), _bookMarkList.isEmpty ? NoDataUI().paddingOnly(top: 215) : ListView.separated( physics: BouncingScrollPhysics(), padding: EdgeInsets.only(left: 24, right: 24, top: 215, bottom: 24), itemCount: _bookMarkList.length, separatorBuilder: (context, index) { return SizedBox(height: 8); }, itemBuilder: (context, index) { return Slidable( controller: _slidableController, actionPane: SlidableBehindActionPane(), secondaryActions: [ ClipRRect( borderRadius: BorderRadius.circular(20), child: IconSlideAction( color: Colors.redAccent, icon: Icons.delete, closeOnTap: true, onTap: () { _bookMarkList.removeAt(index); BookMarkModel.saveToPrefs(_bookMarkList); Utils.showToast("تم حذف المرجع"); setState(() {}); }, ), ), ], child: Container( width: double.infinity, padding: EdgeInsets.fromLTRB(12, 12, 12, 12), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20), border: Border.all(color: ColorConsts.greyE0Color, width: 1), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ (_bookMarkList[index].surahNameAR + ":").toText(12, color: ColorConsts.primaryBlue), Text( " ${_bookMarkList[index].numberInSurah}", style: TextStyle(fontSize: 14, fontFamily: "BArabics", color: ColorConsts.secondaryOrange), ), ], ), Text( _bookMarkList[index].reverseAyatNumber(), textAlign: TextAlign.start, style: TextStyle( fontFamily: "UthmanicHafs", fontSize: 16, color: ColorConsts.primaryBlue, fontWeight: FontWeight.bold, ), ), ], ), ).onPress(() { Navigator.pushNamed(context, QuranScreen.routeName, arguments: _bookMarkList[index]); }), ); }, ), ], ); } }