تحقق من هذا الرمز في الرفرفة
استيراد "الحزمة: رفرفة/مادة.dart"؛
استيراد 'الحزمة: المشتركة\_تفضيلات/المشتركة\_preferences.dart'؛

استيراد 'check\_survey.dart'؛

فئة SurveyPage تمتد إلى StatefulWidget {
 const SurveyPage({Key? key}) : super(key: key);

 @تجاوز
 \_SurveyPageState createState() => \_SurveyPageState();
}

فئة \_SurveyPageState تمتد الحالة {
 كثافة العمليات؟ \_surveyReminder;
 كثافة العمليات؟ \_overallExperienceRating;
 كثافة العمليات؟ \_foodQualityRating;
 كثافة العمليات؟ \_deliveryTimeRating;
 كثافة العمليات؟ \_orderAccuracyRating;
 كثافة العمليات؟ \_appExperienceRating;
 كثافة العمليات؟ \_likelihoodToRecommendRating;
 سلسلة \_additionalComments = ""؛

 القائمة النهائية \_surveyQuestions = [
 "الخبرة الشاملة"،
 "جودة الطعام"،
 "موعد التسليم"،
 "دقة الطلب"،
 "تجربة التطبيق"،
 "احتمال التوصية"،
 "تعليقات إضافية: (اختياري)"،
 ];

 القائمة النهائية \_ratedIcons = [
 الأيقونات.المشاعر\_جداً\_غير راضٍ،
 الأيقونات.المشاعر\_غير راضٍ،
 الأيقونات.المشاعر\_محايدة،
 أيقونات.المشاعر\_راضية،
 الأيقونات.المشاعر\_جدًا\_راضي،
 ];

 @تجاوز
 حالة الفراغ () {
 super.initState();
 checkSurveyReminder();
 }

 باطل checkSurveyReminder () غير متزامن {
 SharedPreferences prefs = انتظار SharedPreferences.getInstance();
 كثافة العمليات؟ ReminderTime = prefs.getInt("survey\_reminder");
 إذا (تذكير الوقت! = فارغ) {
 DateTime ReminderDate = DateTime.fromMillithansSinceEpoch(reminderTime);
 DateTime now = DateTime.now();
 إذا (now.difference(reminderDate) < Duration(days: 1)) {
 ستاتيت(() {
 \_surveyReminder = ReminderTime;
 });
 } آخر {
 prefs.remove("الاستطلاع\_تذكير");
 }
 } آخر {
 /\* عرض الحوار (
 السياق: السياق،
 المنشئ: (سياق BuildContext) {
 إرجاع SurveyPopup();
 },
 ); \*/
 }
 }

 مجموعة باطلةSurveyReminder() غير متزامن {
 SharedPreferences prefs = انتظار SharedPreferences.getInstance();
 prefs.setInt("survey\_reminder", DateTime.now().millithansSinceEpoch);
 Navigator.pop(context);
 }

 استبيان باطلة () {
 // TODO: أرسل بيانات الاستطلاع إلى الخادم
 Navigator.pop(context);
 }

 @تجاوز
 بناء القطعة (سياق BuildContext) {
 إرجاع WillPopScope(
 onWillPop: () غير متزامن {
 إذا (\_surveyReminder != null) {
 setSurveyReminder();
 }
 عودة صحيحة؛
 },
 الطفل: سقالة(
 شريط التطبيقات: شريط التطبيقات(
 العنوان: نص ("استطلاع")،
 )،
 الجسم: الحشو(
 الحشو: const EdgeInsets.all(16.0)،
 الطفل: العمود(
 crossAxisAlignment: CrossAxisAlignment.start،
 أطفال: [
 نص(
 "يرجى تقييم تجربتك"،
 النمط: نمط النص (حجم الخط: 20)،
 )،
 صندوق الحجم (الارتفاع: 16)،
 ...\_surveyQuestions.map((سؤال) {
 /\* التبديل (سؤال) {
 حالة "الخبرة الشاملة":
 التصنيف = \_overallExperienceRating;
 استراحة؛
 حالة "جودة الغذاء":
 التصنيف = \_foodQualityRating;
 استراحة؛
 حالة "وقت التسليم":
 التصنيف = \_deliveryTimeRating;
 استراحة؛
 حالة "دقة الطلب":
 التصنيف = \_orderAccuracyRating;
 استراحة؛
 حالة "تجربة التطبيق":
 rating = \_appExperienceRating;
 استراحة؛
 حالة "احتمال التوصية":
 rating = \_likelihoodToRecommendRating;
 استراحة؛
 حالة "تعليقات إضافية (اختياري)": \*/

 كثافة العمليات؟ تقييم؛

 التقييم = السؤال == "الخبرة الشاملة"
 ؟ \_overallExperienceRating
 : \_foodQualityRating;
 نص(
 ""،
 النمط: نمط النص (اللون: Colors.black)،
 );

 قائمة تصنيف الأيقونات = List.generate(
 \_ ratingIcons.length،
 (الفهرس) => الأيقونة(
 \_ ratingIcons [الفهرس]،
 اللون: التصنيف == الفهرس؟ الألوان.الأصفر[700]: الألوان.رمادي،
 الحجم: 40,
 )،
 );

 /\* التبديل (سؤال) {
 حالة "الخبرة الشاملة":
 التصنيف = \_overallExperienceRating;
 استراحة؛
 حالة "جودة الغذاء":
 التصنيف = \_foodQualityRating;
 استراحة؛
 حالة "وقت التسليم":
 التصنيف = \_deliveryTimeRating;
 استراحة؛
 حالة "دقة الطلب":
 التصنيف = \_orderAccuracyRating;
 استراحة؛
 حالة "تجربة التطبيق":
 rating = \_appExperienceRating;
 استراحة؛
 حالة "احتمال التوصية":
 rating = \_likelihoodToRecommendRating;
 استراحة؛
 حالة "تعليقات إضافية (اختياري)": \*/
 /\* عمود الإرجاع(
 crossAxisAlignment: CrossAxisAlignment.start،
 أطفال: [
 نص (سؤال، النمط: TextStyle (حجم الخط: 18)))،
 صندوق الحجم (الارتفاع: 8)،
 حقل النص(
 عند التغيير: (القيمة) {
 \_additionalComments = value;
 },
 الديكور: زخرفة الإدخال (
 الحدود: OutlineInputBorder()،
 تلميح النص: "أدخل تعليقاتك هنا"،
 )،
 ماكس لاينز: فارغة،
 )،
 صندوق الحجم (الارتفاع: 16)،
 ]،
 );
 تقصير: \*/
 عمود الإرجاع(
 crossAxisAlignment: CrossAxisAlignment.start،
 أطفال: [
 نص (سؤال، النمط: TextStyle (حجم الخط: 18)))،
 صندوق الحجم (الارتفاع: 8)،
 صف(
 mainAxisAlignment: MainAxisAlignment.spaceBetween،
 أطفال: [
 ...تصنيف الرموز,
 ]،
 )،
 صندوق الحجم (الارتفاع: 16)،
 ]،
 );
 // }
 }).لإدراج()،
 صف(
 mainAxisAlignment: MainAxisAlignment.spaceAround،
 أطفال: [
 زر مرتفع(
 على الضغط: () {
 إذا (\_surveyReminder != null) {
 setSurveyReminder();
 }
 Navigator.pop(context);
 },
 الطفل: نص ("خروج")،
 )،
 زر مرتفع(
 على الضغط: () {
 إذا (\_overallExperienceRating == null ||
 \_foodQualityRating == null ||
 \_deliveryTimeRating == فارغة ||
 \_orderAccuracyRating == فارغة ||
 \_appExperienceRating == فارغة ||
 \_likelihoodToRecommendRating == null) {
 عرض الحوار (
 السياق: السياق،
 منشئ: (السياق) {
 إرجاع حوار التنبيه (
 العنوان: نص ("الاستبيان غير مكتمل")،
 محتوى:
 نص ("الرجاء إكمال جميع أسئلة الاستبيان.")،
 أجراءات: [
 زر مرتفع(
 على الضغط: () {
 Navigator.pop(context);
 },
 الطفل: نص ("موافق")،
 )،
 ]،
 );
 },
 );
 يعود؛
 }
 سلم الاستبيان()؛
 },
 الطفل: نص ("إرسال")،
 )،
 ]،
 )،
 ]،
 )،
 )،
 )،
 );
 }
}
{"source": "ewof/sharegpt-instruct-unfiltered-deduped", "kind": "human", "evolved_from": null}