Flutter Dev نشر 18 يوليو 2022 أرسل تقرير نشر 18 يوليو 2022 تحيه طيبه للجميع وجدت شرح على الانترنت كيفية جلب الوقت الفعلي الذي تم تخزينه مع البوست في قاعدة البيانات والعمل كان كالتالي: كود الوقت: import 'package:intl/intl.dart'; class TimeAgo{ static String ? timeAgoSincDate(int time) { DateTime notificationDate =DateTime.fromMillisecondsSinceEpoch(time); final date2=DateTime.now(); final diff =date2.difference(notificationDate); if(diff.inDays>8) return DateFormat("dd-MM-yyyy HH:mm:ss").format(notificationDate); else if ((diff.inDays/7).floor()>=1) return 'Last Week'; else if (diff.inDays>=2) return '${diff.inDays}days ago'; else if (diff.inDays>=1) return '1 daya ago'; else if (diff.inHours>=2) return '${diff.inHours} hours ago'; else if (diff.inHours>=1) return '${diff.inHours} 1 hours ago'; else if (diff.inMinutes>=2) return '${diff.inMinutes} Minutes ago'; else if (diff.inMinutes>=1) return '${diff.inMinutes} 1 Minutes ago'; else if (diff.inSeconds>=3) return '${diff.inSeconds} Seconds ago'; else return 'Just now'; } } صفحة الاستعلام كالتالي: import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'date_time_extension.dart'; void main() { runApp(TimeAge()); } class TimeAge extends StatefulWidget { const TimeAge({Key? key}) : super(key: key); @override _TimeAgeState createState() => _TimeAgeState(); } class _TimeAgeState extends State<TimeAge> { @override void initState() { super.initState(); GatData(); } bool _isLoading =false; List data =[]; var TimeNowAge; Future<String?> GatData() async { setState(() { _isLoading = true; }); var response = await http.get( Uri.parse("**************/*********.php"), headers: {"Accept": "application/json"}); var convertDataToJson = json.decode(response.body); data = convertDataToJson['result']; setState(() { TimeNowAge = data[0]['TimeNow']; _isLoading=false; print(TimeNowAge); }); } @override Widget build(BuildContext context) { return MaterialApp(home: Scaffold( body: Column(children: [ _isLoading ? CircularProgressIndicator(): Text('${TimeAgo.timeAgoSincDate(TimeNowAge).toString()}') ]), ),); } } في الصفحة أعلاه انا أحاول جلب الوقت الذي قمت بتخزينه مسبقا في قاعدة البيانات ثم تحويله من خلال الكود الذي ارفقته في الأعلى ولكن احصل على الخطاء التالي كل ما حاولت تشغيل الكود: The following _TypeError was thrown building TimeAge(dirty, state: _TimeAgeState#d2e8c): type 'String' is not a subtype of type 'int' هل يوجد خطاء في طريقتي ؟ ما هو العمل الصحيح لتشغيل الكود ؟ صفحة php كالتالي: <?php require_once 'cnt.php'; $sql="SELECT * FROM testtable "; $stmt = $con->prepare($sql); $stmt->execute(); $result = $stmt->get_result(); $array = array(); while ($row = mysqli_fetch_assoc($result)) { $array[] = $row; } echo ($result) ? json_encode(array("code" => 1, "result"=>$array)) : json_encode(array("code" => 0, "message"=>"Data not found !")); ?> والجدول في قاعدة البيانات كالتالي: 1 اقتباس
1 Wael Aljamal نشر 18 يوليو 2022 أرسل تقرير نشر 18 يوليو 2022 إن الطلبية تعيد الوقت بشكل سلسلة نصية، بتنسيق الوقت كما هو مخزن في قاعدة البيانات لديك. لذلك على السيرفر أن يحول الوقت من تنسيق التاريخ لرقم عدد صحيح. استخدم الدالة strtotime لتحويل الخانة التي تحمل الوقت لرقم echo strtotime('2012-03-27 18:47:00'); //--> which results to 1332866820 أعتقد هكذا: ضمن الحلقة $row['TimeNow'] = strtotime($row['TimeNow']); $array[] = $row; ثم في Dart استقبل (الرقم) الذي سيكون على شكل نص (احتمال) وحوله لرقم صحيح import 'dart:convert'; . . . TimeNowAge = int.parse(data[0]['TimeNow']); 1 اقتباس
0 Flutter Dev نشر 18 يوليو 2022 الكاتب أرسل تقرير نشر 18 يوليو 2022 (معدل) بتاريخ 31 دقائق مضت قال Wael Aljamal: إن الطلبية تعيد الوقت بشكل سلسلة نصية، بتنسيق الوقت كما هو مخزن في قاعدة البيانات لديك. لذلك على السيرفر أن يحول الوقت من تنسيق التاريخ لرقم عدد صحيح. استخدم الدالة strtotime لتحويل الخانة التي تحمل الوقت لرقم echo strtotime('2012-03-27 18:47:00'); //--> which results to 1332866820 أعتقد هكذا: ضمن الحلقة $row['TimeNow'] = strtotime($row['TimeNow']); $array[] = $row; ثم في Dart استقبل (الرقم) الذي سيكون على شكل نص (احتمال) وحوله لرقم صحيح import 'dart:convert'; . . . TimeNowAge = int.parse(data[0]['TimeNow']); مرحبا اخي الكريم اصبح يعمل الكود بشكل التالي مع وجود مشكله بسيطة لم افهم سببها : Future<String?> GatData() async { setState(() { _isLoading = true; }); var response = await http.get( Uri.parse("************.php"), headers: {"Accept": "application/json"}); var convertDataToJson = json.decode(response.body); data = convertDataToJson['result']; setState(() { //TimeNowAge = int.parse(data[0]['TimeNow']); TimeNowAge = data[0]['TimeNow']; _isLoading=false; print(TimeNowAge); }); } <?php require_once 'cnt.php'; $sql="SELECT * FROM testtable "; $stmt = $con->prepare($sql); $stmt->execute(); $result = $stmt->get_result(); $array = array(); while ($row = mysqli_fetch_assoc($result)) { $row['TimeNow'] = strtotime($row['TimeNow']); $array[] = $row; } echo ($result) ? json_encode(array("code" => 1, "result"=>$array)) : json_encode(array("code" => 0, "message"=>"Data not found !")); ?> المشكلة كالتالي: اول نقطة مفترض ان تظهر لي كتابه مع الوقت الذي يظهر حسب كود الوقت الذي فعلته في الأعلى على سبيل المثال 1Minutes ago ولكن الكود لدي لا يظهر أي شيء المشكلة الثانية انا قمت بتخزين القيم التأليه في قاعدة البيانات : ولكن ما يظهر لي مختلف كالتالي: مع العلم ان وقت المحاكي مضبوط + التاريخ ايضا تم التعديل في 18 يوليو 2022 بواسطة مروان مروان3 اقتباس
0 Wael Aljamal نشر 18 يوليو 2022 أرسل تقرير نشر 18 يوليو 2022 بتاريخ 1 ساعة قال مروان مروان3: اول نقطة مفترض ان تظهر لي كتابه مع الوقت الذي يظهر حسب كود الوقت الذي فعلته في الأعلى على سبيل المثال 1Minutes ago ولكن الكود لدي لا يظهر أي شيء من فضلك استعمل عبارات الطباعة echo و print لنعرف ما هو الكائن و كيفية تمثيل البيانات ضمنه، لكي نستطيع عمل التحويل بدقة. نحن في النهاية، نريد تمرير الوقت بقيمة رقمية لتستقبلها الدالة: static String ? timeAgoSincDate(int time) إن لم تنجح عملية التحويل لرقم، استدبل الوسيط بكائن تاريخ و عدل الشيفرة في Dart لتحسب الفرق بين تاريخين الحالي و الممرر للدالة اقتباس
السؤال
Flutter Dev
تحيه طيبه للجميع
وجدت شرح على الانترنت كيفية جلب الوقت الفعلي الذي تم تخزينه مع البوست في قاعدة البيانات والعمل كان كالتالي:
كود الوقت:
import 'package:intl/intl.dart'; class TimeAgo{ static String ? timeAgoSincDate(int time) { DateTime notificationDate =DateTime.fromMillisecondsSinceEpoch(time); final date2=DateTime.now(); final diff =date2.difference(notificationDate); if(diff.inDays>8) return DateFormat("dd-MM-yyyy HH:mm:ss").format(notificationDate); else if ((diff.inDays/7).floor()>=1) return 'Last Week'; else if (diff.inDays>=2) return '${diff.inDays}days ago'; else if (diff.inDays>=1) return '1 daya ago'; else if (diff.inHours>=2) return '${diff.inHours} hours ago'; else if (diff.inHours>=1) return '${diff.inHours} 1 hours ago'; else if (diff.inMinutes>=2) return '${diff.inMinutes} Minutes ago'; else if (diff.inMinutes>=1) return '${diff.inMinutes} 1 Minutes ago'; else if (diff.inSeconds>=3) return '${diff.inSeconds} Seconds ago'; else return 'Just now'; } }
صفحة الاستعلام كالتالي:
في الصفحة أعلاه انا أحاول جلب الوقت الذي قمت بتخزينه مسبقا في قاعدة البيانات ثم تحويله من خلال الكود الذي ارفقته في الأعلى
ولكن احصل على الخطاء التالي كل ما حاولت تشغيل الكود:
The following _TypeError was thrown building TimeAge(dirty, state: _TimeAgeState#d2e8c): type 'String' is not a subtype of type 'int'
هل يوجد خطاء في طريقتي ؟ ما هو العمل الصحيح لتشغيل الكود ؟
صفحة php كالتالي:
والجدول في قاعدة البيانات كالتالي:
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.