خودمم نمیدونم چیه، فهمیدم پست میکنم :/
حل مشکل تکرار بی پایان یک اجرا هنگام استفاده از setState در FutureBuilder و ListView.Builder در فلاتر
دوستان سلام. به یکی از چرت ترین مشکلاتی که بهش برخوردم میخوام صحبت کنم.
تو یکی از پروژه ها یه متغیر رو داخل یه FutureBuilder ( داخل ListViewBuilder هم همین مشکل وجود داره) یه مقدار جدید دادم بهش . یه BottomNavigationBar هم داشتم که یه ویجت Text قرار داده بودم وهمون متغیر رو داخلش قرار داده بودم. به شکل زیر:
class BasketBar extends StatefulWidget {
@override
_BasketBarState createState() => _BasketBarState();
}
class _BasketBarState extends State<BasketBar> {
double? finalTotal;
...
@override
Widget build(BuildContext context) {
S().init(context);
return Scaffold(
appBar: buildAppBar(context),
body: FutureBuilder<List<Data>>(
future: getData,
builder: (context, local) {
if (local.hasData) {
...
myVariable = local.data!.name;
...
bottomNavigationBar: Text(myVariable.toString()),
اما مقدار داخل bottomNavigationBar برای بار اول بروز نمیشد و null نشون میداد. و باید صفحه رو رفرش میکردم تا مقدار درست رو نشون بده. بنابراین از کد زیر استفاده کردم:
Future.delayed(Duration.zero, () {
setState(() {
myVariable = local.data!.name;
});
});
با این کد، متغیر myVariable برای بار اول نشون داده شد اما انگار برنامه میفتاد رو دور تکرار و بی وقفه این setState اجرا میشد. بنابرین یه شرط اضافه کردم به این شکل:
if(myVariable == null)Future.delayed(Duration.zero, () {
setState(() {
myVariable = local.data!.name;
});
});
و مشکل حل شد!
اما قضیه از چه قرار بود؟
وقتی از setState استفاده میکنم ویجت build دوباره ساخته میشه و بنابراین فیچربیلدر هم دوباره ساخته میشه و این شرط :
Future.delayed(Duration.zero, () {
setState(() {
myVariable = local.data!.name;
});
});
دوباره تکرار میشه و مثل یه حلقه ی بی پایان ویجت ساخته میشه .
اما شرطی که اضافه کردیم فقط برای بار اول این کار رو انجام میده و تمام!!!
چند لینک مفید برای فلاتر
ارسال متغیر بین صفحات در فلاتر:passing-data-between-screens-in-flutter
http://adfoc.us/55188880471587
/how-to-make-a-full-screen-dialog-in-flutter
what-is-the-difference-between-pushreplacementnamed-and-popandpushnamed-in-flutt
https://stackoverflow.com/questions/57409383/how-to-show-a-list-with-condition-in-flutter
مفهوم null safety در زبان برنامه نویسی dart
سلام به شما دوستان عزیز.
پروژه رو باز کردم و sdk فلاتر رو روی ورژن 2 قرار دادم. و چی شد؟ بووووووووووم… یه عالمه ارور که باید اصلاحشون میکردم. بخاطر چی؟ مفهوم جدید null safety . که خیلی از پکیج ها هم بخاطرش ارور دادن.
خب طبیعتا برای اینکه ارور هارو رفع کنید باید با این مفهوم آشنا بشید که البته اولش شاید یکم گنگ به نظر بیاد اما با مطالعه اونها و انجامش روی پروژه قابل فهم تر میشه.
یه مقاله خیلی خوب براتون معرفی میکنم که خیلی خلاصه و مفید توضیح داده
حل مشکل The parameter can’t have a value of ‘null’ because of its type in Dart
استفاده از transaction در حلقه foreach در لاراول
به شکل زیر عمل کنید:
$dbConn->begin_transaction();
try{
foreach($ítems as $item){
//Whatever you are going to do
}
if($dbConn->commit()){
//Notify buyer about all the transactions, the user doesn't receives the notification unless the commit was succesful
}
catch(Exception ex){
$dbConn->rollback();
}
منبع: کلیک کنید
تفاوت PrimaryKey و ForeignKey
تفاوت بین کلید خارجی و کلید اصلی
تفاوت اصلی بین کلید خارجی و کلید اصلی در این است که کلید خارجی یک ستون یا مجموعه ای از ستون ها است که به یک کلید اصلی یا کلید نامزد جدول دیگر اشاره می کنند در حالی که کلید اصلی یک ستون یا مجموعه ستون هایی است که می توان از آنها استفاده کرد منحصر به فرد یک ردیف در یک جدول را مشخص کنید.یک ستون یا مجموعه ای از ستون ها که می تواند برای شناسایی یا دسترسی به یک ردیف یا مجموعه ای از ردیف ها در یک پایگاه داده استفاده شود ، کلید نامیده می شود. کلید اصلی در یک پایگاه داده رابطه ای ترکیبی از ستون ها در یک جدول است که به طور منحصر به فرد…
برای مشاهده کامل پست روی این لینک کلیک کنید
Laravel. Redirect intended to post method
I’m using laravel 5 and this is my problem. User fill in form X and if he isin’t logged in, he gets redirected to fill in more fields form OR he gets possibility to log in. Everything works just fine, if user fill in additional fields, but if he login, laravel redirects user to form X with GET method instead of POST.
This is how my middleware redirect looks like:
return redirect()->guest('user/additional-fields');
This redirect appears on successfull log in:
return redirect()->intended();
You can use a named route to solve this issue:
Lets make a named route like this:
For Get
Route::get('user/additional-fields',array(
'uses' => 'UserController@getAdditionalFields',
'as' => 'user.getAdditionalFields'
));
For post
Route::post('user/additional-fields',array(
'uses' => 'UserController@postAdditionalFields',
'as' => 'user.postAdditionalFields'
));
So we can now ensure Laravel uses the right route by doing this
return redirect()->guest(route('user.getAdditionalFields'));
Also note that its not possible to redirect a POST
because Laravel expects form to be submitted. SO you can’t do this:
return redirect()->guest(route('user.postAdditionalFields'));
except you use something like cURL or GuzzleHttp simulate a post request
منبع : کلیک کنید
فرستادن متغیر از کنترلی به کنترل دیگر در لاراول8
تو یکی از پروژه هام میخواستم اگر کاربر ادمین بود ، عملیات دیگه ای رو تو کنترل دیگه انجام بده( چون موضوع کمی پیچیدست از جزئیات بیشتر صرف نظر میکنم.) بنابراین به شکل زیر کد رو زدم:

به جای [$id] میتونید از compact(‘id’) هم استفاده کنید.
مسیرهاRoute هم به صورت زیره:

Routes
توجه کنید مسیر دوم با نام showProduct حتما باید ایدی داخل مسیر قرار داده بشه.
و کنترلر مقصد :

با برگردوندن ایدی متوجه میشیم انتقال متغیر به درستی انجام شده.

خوشحال میشم نظر بدید.