آقای موسوی من دوره فلاتر شما رو تهیه کردم و برای خودم متاسفم که در این دوره شرکت کردم جاله چه طوری این دوره رو ظبط کردید همه جای دوره فقط تا جایی پیش میرید که محصولاتی از سایت رو با api در یک لیست نشون میدید دیگه تمام این محصول رو یعنی شما به این فکر نکردید که یه کاربر محصولی رو ببینه روش کلیک میکنه تا وارد جژئیات بشه یه چیز هایی رو آموزش میدید که در اینترنت خیلی بهتر از اموزش های شما هست و وقتی کسی پولی میده باید ارزش اون کار بیشتر از دوره های رایگان باشه نه این که به درد نخور تر از اون ها و یک هفته است من بهتون پیام دادم هنوز جواب نداید در حالی که گفتید دوره پشتیانی داره واقعا شما رو میگم همه ما ایرانی ها به نوعی *** هستم یه نفر نیست تو این مملکت کارش رو درست انجام بده
@hesammousavi
تعجب میکنم از حرفاتون :/
اون زمانی که راکت دوره فلاتر گذاشت سایتای ایرانی آموزش فارسی نداشتن
من خودم فلاتر رو از راکت یاد گرفتم
درسته قدیمی شده ولی هنوزم قابل استفاده هستش
میتونین از سایت های دیگه رایگان و یا پولی جدیدترشو بگیرین
شک دارم که یاد گرفته باشید چون من سه روز قبل سوالی رو مطرح کردم که اصلا جواب های سطح پایینی میداید و حتی درک موضوع هم برای شما خیلی سخت بود این که بتونید برنامه سطح پایینی رو کد زنی کنید نشان دهنده این نیست که یاد گرفته باشید من از همون اول که این دوره رو گرفتم تمام قسمت ها مهم رو خودم با هزار بد بختی پیدا کردم و این دوره هیچ کمکی به من نکرده و شما اگر ادعا دارید که یاد گرفتی این سوال من رو پاسخ بدید
1 - من یک صفحه اصلی دارم که محصولاتی داخل این صفحه هست با api این محصولات گرفته شده
2- کاربر روی یکی از محصولات کیک میکنه و وارد صفحه مشخصات اون محصول میشه
3- در صفحه مشخصات محصول فروشنده ای وجود داره مثلا اقای ابراهیمی که این آقای ابراهیمی یک فروشنده است .
4- حالا کاربر روی آقای ابراهیمی میزنه وارد صفحه مشخصات آقای ابراهیمی میشه و تمام محصولات شخص آقای ابراهیمی باید نشون داده بشه
حالا که یاد گرفتی به من کمک کن اگه واقعا یاد گرفتی و چند ساله فلاتر کار میکنی
من برای لینک دادن از پیج get استفاده کردم
از Navigator استفاده کردم
ولی متاسفانه وارد هر صفحه که میشه اطلاعات قبلی وجود دارد و اطلاعات جدید هم اضافه میشه و وقتی روت های قبلی رو هم پاک میکنی چه با off یا pushNamedAndRemoveUntil یا تمام توابع این دو پیج به جای بازگشت به صفحه قبل بر میگرده صفحه اصلی
الان پاسخ بدید
شما چه راهکاری داری
@elyas.dev
@armankhan
من نگفتم کامل یادگرفتم ولی خب بیشترشو از همین دوره یادگرفتم
شما یه صفحه دارین که محصولات داخلشو از api میگیرین
وقتی میرین توی یه صفحه دیگه و برمیگردین محصولات قبلی هست و دوباره از api گرفته میشه و بهشون اضافه میشه؟
درسته؟
خب اون قسمتی که لیستی تعریف کردین و دیتا رو میریزین داخلش رو کدشو بذارین ببینم شاید بتونم کمک کنم.
این کد api بنده است
void slider_xsosi() async {
var dataxsosie = await http.get(
"https:/............/api/home/users/xsosie/products?api_token=" +
tokenuser.toString());
var Jsonres_xsosie = jsonDecode(dataxsosie.body);
for (var items_xsosie in Jsonres_xsosie) {
var Sdata_xsosie = Xsosie(
items_xsosie['id'],
items_xsosie['titleproduct'],
items_xsosie['description'],
items_xsosie['url'],
items_xsosie['img'],
items_xsosie['price'],
items_xsosie['times'],
items_xsosie['seodecription'],
items_xsosie['userid'],
);
ItemXsosie.add(Sdata_xsosie);
}
if (mounted) {
setState(() {
_isloding = false;
});
} else {
ItemXsosie.clear();
}
}
بفرمایید
child: Container(
padding: EdgeInsets.only(top: 20, bottom: 5),
height: MediaQuery.of(context).size.height,
child: _isloding == true
? Align(
alignment: Alignment.topCenter,
child: CircularProgressIndicator(),
)
: Container(
child: ItemXsosie.isEmpty
? Text("هیچ دوره ای یافت نشد")
: ListView.builder(
itemCount: ItemXsosie.length,
itemBuilder:
(context, index) {
var _itempro =
ItemXsosie[index];
var myInt = int.parse(
_itempro.price);
assert(myInt is int);
int countspro = 0;
var jpro = countspro;
String tpro = "$jpro";
return Column(
children: [
GestureDetector(
onTap: () async {
Navigator.of(context,rootNavigator: true);
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) =>
DeltiseXsosi(
xsosie:
_itempro,
),
),
) ;
;
},
child: Container(
padding:
EdgeInsets.all(
10),
margin:
EdgeInsets.only(
top: 8,
right: 30,
left: 30,
bottom: 7),
decoration: BoxDecoration(
border: Border.all(
color: Colors
.grey
.shade300),
borderRadius:
BorderRadius
.circular(
15)),
child: Row(
children: [
Container(
width: 50,
height: 50,
margin: EdgeInsets
.only(
left:
6),
decoration: BoxDecoration(
image: DecorationImage(
image: NetworkImage(
"https://.....com/" +
_itempro.img,
),
fit: BoxFit.cover),
borderRadius: BorderRadius.circular(15)),
),
Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
children: [
Container(
child:
Text(
_itempro
.titleproduct,
style: TextStyle(
fontSize:
11),
overflow:
TextOverflow.ellipsis,
),
),
SizedBox(
height: 2,
),
Text(
"مدرس : " +
_itempro.userid[0]
[
'lastname'],
style: TextStyle(
fontSize:
9,
color: Colors
.grey
.shade800),
),
],
),
Expanded(
child:
Container()),
Container(
padding: EdgeInsets
.only(
left:
10),
child: Column(
children: [
Text(
intl.NumberFormat('#,###,000')
.format(myInt),
style: TextStyle(
fontSize:
11,
fontWeight:
FontWeight.bold),
),
Text(
"تومان",
style: TextStyle(
fontSize:
9,
fontWeight:
FontWeight.bold),
)
],
),
)
],
),
),
)
],
);
})))
توی این کدها مشکل خاصی دیده نمیشه
اون قسمتی که صفحه لود میشه و اطلاعات رو از api میگیرین چجوریه؟
کدهایی که api رو صدا میزنین و میریزین توی ItemXsosie
خب من اطلاعات رو با یک حلقه for میریزم داخل ItemXsosie
و از ItemXsosie داخل listview استفاده کردم
الان من هدف ام اینه زمانی که کاربر وارد صفحه جدید میشه اطلاعات جدید ببینه قدیمی ها پاک بشن
من برای این کار هزار راه رو امتحان کردم ولی حل نشده
از این ها من استفاده کردم
dispose و اطلاعات لیست ها رو پاک کردم
از تمام توابع Navigator استفاده کردم هنگام لینک دادن به صفحه های جدید
با این تابع Navigator.push کلا مشکل داره اطلاعات قبلی پاک نمیشه
در این حالت Navigator.pushReplacement اطلاعات قبلی پاک میشن و جدید نمایش داده میشه اما کاربر دکمه برگشت رو بزنه بر میگرده به صفحه اصلی چون همه روت ها پاک شدن و باید هم این اتفاق بیفته
الان من میخام به آقای موسی و شما که طرف داری کردی چند سال سابفه دارید این مشکل رو حل کنید
@elyas.dev
چی بگم والا :)
شما توی حلقه for نوشتین که :
ItemXsosie.add(Sdata_xsosie);
الان شما باید یه جایی همچین چیزی داشته باشین
var ItemXsosie = <Xsosie>[];
یعنی یه لیست خالی باشه که شما بهش اضافه کنین
من هزاران بار لیست گرفتم و همچین مشکلی نداشتم
الانم کدهای شما رو ندارم که ببینم چجوریه
این هم دارم بفرمایید
import 'package:flutter/material.dart';
import 'package:sepntak/deltise/deltise_xsosi.dart';
import 'package:sepntak/list/product_xsosielist.dart';
import 'package:sepntak/list/users_list.dart';
import 'package:intl/intl.dart' as intl;
import 'package:sepntak/list/widgets/network_sensitive.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter_custom_clippers/flutter_custom_clippers.dart';
import 'package:flutter/src/widgets/framework.dart';
List<Xsosie> ItemXsosie = [];
bool _isloding = true;
class UserXsosie extends StatefulWidget {
final String tokenuser;
final String avatar;
final String lastname;
const UserXsosie({Key key, this.tokenuser, this.avatar, this.lastname})
: super(key: key);
@override
State<StatefulWidget> createState() =>
UserXsosieState(tokenuser, avatar, lastname);
}
چرا
List<Xsosie> ItemXsosie = [];
bool _isloding = true;
خارج از بدنه کلاس و تابع build گذاشتین
من اطلاعات رو میگیرم مشکلی در گرفتن اطلاعات ندارم من با خذف کردن اطلاعات مشکل دارم خوب دقت کنید داخل این لیست دوتا محصول هست داخل این لیست
List<Xsosie> ItemXsosie = [];
تا این جا درست این لیست در صفحه آقای ابراهیمی نشون داده میشه که دو دوتا محصول داره
حالا کاربر میخواد محصولات آقای شمس رو هم ببینه خب اطلاعات قبلی آقای ابراهیمی که قبلا لود شده دیگه پاک نمیشه و قاطی هم مال
آقای ابراهیمی و هم آقای شمس نشون داده میشه
@elyas.dev
اون خط
ItemXsosie.clear();
هم داخل setState بذارین شاید فرقی کرد.
مشکل از همین ریزه کاری هاست
این جا به این اشاره کردید
خارج از بدنه کلاس و تابع build گذاشتین
همین کارم رو درست کرد خیلی ممنونم به خدا پنج روزه هزار روش رو امتحان کردم
الان آوردم داخل build کلا درست شد
@elyas.dev
@armankhan
خدا رو شکر :)
فکر کنم اون متغیر ها برای اینکه به setState دسترسی داشته باشن باید داخل build باشن
آره الان دیگه مشکل نداره خیلی ممنونم
انشالله همیشه موفق باشد منم بابات تند روی معذرت میخام بگذارید پای فشار کاری و استرس
@elyas.dev
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟