محل تبلیغات شما

طراحی حرفه ای وب سایت با Laravel و اپلیکیشن اندروید با Flutter



کافیه این رابطه رو توی مدل مربوطه بنویسید

public function parent()
{
return $this->belongsTo('App\CourseModule','parent_id')->where('parent_id',0)->with('parent');
}
public function children()
{
return $this->hasMany('App\CourseModule','parent_id')->with('children');
}

بعدشم توی کنترلرتون اینطوری دسته بندیهارو بگیرید
Category::where([['parent_id',null],['active',1]])->with('children')->get();

حذف از کالکشن با شرط در لاراول - Remove from a collection on a condition in Laravel
یه موقعی هست که میخوایم بر اساس یک شرطی یکسری از موارد رو از یک کالکشن حذف کنیم برای این کار از کد زیر استفاده میکنیم :

$selected = [];
foreach ($products as $key => $value) {
if ($value->active == 0) {
$selected[] = $value;
$products->forget($key);
}
}

برای تغییر آیکن اپلیکیشن در اندروید استودیو : 

آیکن مورد نظرتون رو ترجیحا با فرمت png که دوری نداشته باشه و شکل ایکن باشه توی یه مسیر دلخواه ( مهم نیست خارج از پروژه باشه ) کپی کنید و مراحل زیر را انجام بدین :
1. روی پوشه app کلیک راست کرده و :

New -> Image Asset 
2 . در پنجره ی باز شده از منوی Icon type گزینه ی    Launcher Icons Legacy only را انتخاب کنید 
3. از منوی Path تصویر خود را پیدا کرده و انتخاب کنید
از طریق سایر آپشن ها میتونید ایکن رو کاستومایز کنید و بعد نکست رو بزنید
نکته مهم :
اسم منحصر به فردی برای فایل در نظر بگیرید یا اینکه ایکن های قبلیو پاک کنید 
بعد برید داخل AndroidManifest و android:icon="@mipmap/ic_launcher2" اسم ایکن جدید رو بذارین مثلا من اینجا یه عدد 2 به اسم اضافه کرده بودم
بعد یه بلید بگیرید و میبینید که ایکن تغییر کرده

سلام 
این مشکلی بود که 2 روز گریبان گیر من و شرکت بود گفتم اینجا با شما به اشتراک بذارم
یه سایتی نوشته بودم بدون هیچ مشکلی داشت روی لوکال و 4 تا هاست دیگه کار میکرد فقط روی یکی از هاست ها روی سیستم مشتری ( نه روزی سیستم ما ) درست لود نمیشد و یه اتفاق عجیب غریبی که میافتاد این بود که یه خطای کنسول میداد که متد prettyPhoto تعریف نشده است . حالا جالب اینجاست که فایلی که داره این خطارو میده اصلا وجود نداره ( وجود داشت ولی محتواش اصلا این نبود  )

باقی سایت هارو روی سیستم کاربر باز کردیم این مشکل رو دیگه نداشت فقط همین یکی بود! حالا علت چیه ؟ ما دوتا کش داریم خیلی اوقات با پاک کردن کش مرورگر مشکلات اینطوری حل میشوند ولی یه مواقعی ( مثل الان ) مشکل عمقی تره !! یعنی شما باید کش DNS رو روی سیستم خودتون پاک کنید .  
لینک اصلی این مقاله رو میذارم که برای ویندوز و مک توضیح داده ولی اینجا فقط کاری که برای ویندوز باید انجام بدین و میگم
1 . اول از همه کش مرورگرتون رو پاک کنید
2.  بعد داخل cmd این دستور را بزنید : ipconfig /flushdns
باید در پاسخ Successfully flushed . بده . بعدش مرورگر رو باز کنید آدرس سایت رو بزنید و یکبار ctrl_f5 رو بزنید
مشکل بر طرف شده!
لینک مطلب رو گذاشتم میتونید استفاده کنید : 
https://mizbanfa.net/blog/hosting/clear-dns-cache/



$('select').selectpicker();
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.1/css/bootstrap-select.css" /><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.13.1/js/bootstrap-select.min.js"></script><select class="selectpicker" multiple data-live-search="true">  <option>Mustard</option>  <option>Ketchup</option>  <option>Relish</option></select>

مقدمه :
زمانی هست که میخواهید اطلاعات یک هاست را به هاست دیگری کپی کنید بدون این که نیاز باشد اطلاعات را دانلود و مجددا آپلود کنید. از طریق این آموزش میتونید اینکارو به راحتی انجام دهید.

 کپی کردن اطلاعات از یک هاست به هاست دیگر بدون نیاز به دانلود و آپلود مجدد :

برای کپی کردن اطلاعات ( سایت و یا هر فایل دیگه ای ) کافیه از کد زیر استفاده کنید
1. فایلهای مورد نظر در هاست مبدا رو بطور کامل zip میکنید و دسترسی فایل zip شده رو روی 777 یا 755 ست کنین.
2. توی مسیر هاست جدید یه فایل به اسم move.php میسازین و کد زیر رو داخلش کپی میکنین ( این فایل برای دانلود در زیر همین مطلب قرار گرفته ) 
2. توی مرورگر ادرس هاست جدید و فایل رو میزنین  مثال : http://sitename.ir/myFile.zip  اگر پیغام انجام شد نمایش داده شد یعنی با موفقیت کپی شده .
نکته 1 : اگر کل سایت روی یک هاست رو میخاید روی یه هاست دیگه انتقال بدین حتما کل اطلاعات رو zip کنید.
نکته 2:  باید دسترسی فایل zip شده رو روی 777 یا 755 ست کنین تا بتونین انتقالش بدین.

<?php
$source = 'http://sitename.ir/myFile.zip';
 
$fh = fopen( basename( $source ), 'w' );
$ch = curl_init( $source );
curl_setopt( $ch, CURLOPT_FILE, $fh );
curl_exec( $ch );
curl_close( $ch );
 
fclose( $fh );
 
echo 'انجام شد';
?>



این تنظیمات برای سرور لوکال در ویندوز 10 میباشد
از مسیر زیر وارد شوید :
Control Panel -> System -> Advance System Setting 
در سربرگ Advance  روی دکمه Enviroment variables کلیک کنید و در لیست System Variables  روی گزینه Path دابل کلیک کنید تا پنجره ی  Edit Enviroment Variable باز شود. سپس آدرس فایل php.exe رو به نسخه ای از php.exe که نیاز دارین تغییر بدین. 

نکته مهم :  حتما بعد از انجام این کار نیاز هست که لپ تاپ خود را Reset کنید

برای دیدن تصویر در سایز اصلی روی آن کلیک کنید



سلام دوستان من یه سایت برای دانلود قالب های بوت استرپی نوشتم که آدرسش رو در انتها براتون میذارم اما نکته که هست اینه که من میخواستم تصاویر با کیفیت بذارم ولی تصاویر با کیفیت حجم بالایی دارن سرعت لود سایت رو خیلیییییییییی کم میکنن یعنی سایت من 20 ثانیه طول میکشید تا لود بشه ، برای همین من از یه ابزار رایگان انلاین به آدرس https://www.fonepaw.com/photo-compressor/ استفاده کردم تا تصاویرم رو بدون افت کیفیت برام کامپرس یا همون فشرده کنه و بعد جایگزین تصاویر قبلی کردم.

سایت دانلود قالب های رایگان html و bootstrap من http://www.bootem.ir هست که میتونید قالب های خیلی حرفه ای رو به رایگان دانلود کنید

زمانی که در VS Code دستور flutter run رو میزنیم  بخاطر سنگین بودن حجم فایل Gradle زمان زیادی صرف میشه تا  دانلود بشه و بعد اپلیکیشن اجرا بشه برای همین تصمیم داریم که فایل رو به راحتی دانلود کنیم و بصورت لوکال ازش استفاده کنیم . برای تحقق این امر به مراحل زیر توجه کنید :
 فایلی که در واقع ادرس Gradle رو داره در مسیر زیر میباشد : 
android/gradle/gradle-wrapper-properties
و مقدار عبارت distributionUrl حاوی ادرس Gradle هست بطور مثال :
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
که بسته به ورژن Gradle شما اسم انتهایی این فایل ممکن است متفاوت باشد
از آدرسی که عبارت distributionUrl  دارد فایل gradle-5.6.2-all.zip را بصورت جداگانه دانلود کرده و در مسیر زیر کپی کنید : 
C:\Users\Your_System_Name\.gradle
سپس در فایل gradle-wrapper-properties مقدار distributionUrl را برابر با عبارت زیر قرار دهید : 
( بطور کامل )
distributionUrl=file\:///C:/Users/ASC/.gradle/gradle-5.6.2-all.zip
سپس دستور flutter run را در ترمینال اجرا کنید ، اگر خطایی از جای دیگری نباشد اپلیکیشن شما به راحتی و سریع اجرا میشود

 دستور مرسوم برای ایجاد پروژه  باعث بروز خطایی میشه که محتواش اینه که این اپلیکیشن AndroidX نیست
Your app isn't using AndroidX
 برای جلوگیری از این خطا پروژه فلاتر خود را با دستور زیر ایجاد کنید یا درصورتی که از قبل پروژه را نوشته اید از طریق این لینک به صفحه راهنمایی مراجعه کنید.
میرید توی پوشه ای که پروژه هاتون داخلشه

Code structor :
flutter create --androidx -t <project-type> <new-project-name>
Mine : 
flutter create --androidx -t app hello_world
Explanation for what <project-type> mean
The option specifies what type of project to create: app, package or plugin

How do I know if my project is using AndroidX?
Starting from Flutter v1.12.13, new projects created with flutter create -t <project-type> use AndroidX by default

سلام دوستان
یکسری از سرویس های فایربیس مثل Authentication , phone number signin, Firebase dynamic links استفاده میکنیم که البته ما تو ایران نهایتا از سرویس احرازهویت یا همان Authentication استفاده میکنیم نیاز داریم به معرفی SHA certificate fingerprints تا گوگل مارو به رسمیت بشناسه و درصورت بروز هرگونه تلاش برای لاگین یا استفاده از هر سرویسی از سمت هر ip غیر مجازی ( ربات ها) جلوگیری کنه و بلاک کنه.

برای این کار باید جاوا روی سیستم شما نصب باشه . جاوا در مسیری مشابه C:\Program Files\Java نصب کنید و داخل فولدر Java میتونید نسخه های مختلف را داشته باشید 
( اگر قصد دارید با فلاتر کد بزنید از نسخه jdk1.8.0_241 استفاده کنید چون فلاتر در حال حاضر تا این تاریخ از نسخه های بالاتر جاوا پشتیبانی نمیکنه اگر هم با فلاتر کاری ندارین که خب هیچی  )
حالا برای این که بتونین از کامند های جاوا استفاده کنید باید از CMD رو در حالت Run as administrator اجرا کنید و وارد مسیر پوشه ای جاوا را در ان قرار دادید شوید . در سیستم من در این مسیر است  : C:\Program Files\Java\jdk1.8.0_241\bin حتما وارد پوشه bin شوید ( از طریق gitbash یکراست برین داخل فولدر و بخواین دستورات رو ران کنید جواب نمیده حتما باید مسیر رو با cd زدن طی کنید) اگر بلد نیستین چطوری مسیر پوشه هارو در Cmd بروید در انتهای همین پست دستوراتشو مینویسم.
بعد دستور زیر را در ترمینال اجرا میکنید 
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

و Enter میزنید . روبروی فیلد  SHA1: یک استرینگ طولانی است همانند تصویر زیر که کد مورد نظر شماست : 
سپس بصورت زیر به پروژه فایربیس خودتون اضافه میکنید.

در Settings پروژه ای که در فایربیس تعریف کردین در قسمت Your apps روی اپلیکیشن مورد نظر خود کلیک کنید در قسمت SHA certificate fingerprints کد دریافت شده را وارد کنید و Save کنید.

اینگونه اپلیکیشن شما به فایربیس بصورت امن وصل میشود

:: فارسی ::
یه موقعی هست که دیگه دسترو flutter pub run build_runner watch کار نمیده این مشکل برای من توی فرایند کار کردن با MobX بوجود اومد و دیگه اجرا نمیشه و فایل *.g.dart را ایجاد نمیکنه . برای حل این مشکل به ترتیب زیر عمل میکنیم : 


اول اجرای این دستور
flutter packages pub run build_runner build --delete-conflicting-outputs

پس از اتمام دستور بالا این دستور را اجرا کرده و مشکل برطرف میشود
flutter pub run build_runner watch

:: English  ::
If flutter pub run build_runner watch won't work any more the Solution is :

Step #1
> flutter packages pub run build_runner build --delete-conflicting-outputs
Rhen after the process has been finished run the second to see it works perfectly
Step #2
> flutter pub run build_runner watch

Sometimes it happens when you are working with Mobx state management or the JsonSerilizable library. 
Point : make sure that the name of the *.g.dart is exact name as the file name
 Ex : for user.dart the G file must have user.g.dart name

در این مثال api من لیستی از post رو دریافت میکرد و به این صورت نمایش میداد : 
[
  {
    "id": 1,
    "title": "Dolores molestiae",
    "content": "Dolores molestiae modi laboriosam ipsum voluptate in a. Quis omnis nisi tenetur. Odio et nihil provident vitae dolorem eos sapiente.",
    "photo": "https://picsum.photos/200",
    "user_id": 1,
    "active": 1,
    "created_at": null,
    "updated_at": null,
    "user": {
      "id": 1,
      "name": "John Doe",
      "email": "2cw5FejUZp@gmail.com",
      "photo": "public/photo/user.png",
      "active": 1,
      "created_at": "2020-03-28T07:00:00.000000Z",
      "updated_at": null
    }
  },


service.dart
import 'dart:convert';
import 'package:eshop/services/models/post.dart';
import 'package:http/http.dart' as http;

class PostLoader {
  Future<List<Post>> fetchPosts() async {
    try {
      final response =
          await http.get('http://kashune.com/flutter/api/v1/posts');

      if (response.statusCode == 200) {
        List<Post> posts = (json.decode(response.body) as List)
            .map((i) => Post.fromJson(i))
            .toList();
        // posts.forEach((element) => print(element.id));
        return posts;
      } else {
        // If the server did not return a 200 OK response,
        // then throw an exception.
        throw Exception('FUCKED UP');
      }
    } catch (e) {
      print('Fucking error is $e');
      return null;
    }
  }
}

post.dart // Post model

class Post {
  final int id;
  final String title;
  final String content;
  final String photo;

  Post({this.id, this.title, this.content, this.photo});
//convert json to model
  factory Post.fromJson(Map<Stringdynamic> json) {
    return Post(
      id: json['id'],
      title: json['title'],
      content: json['content'],
      photo: json['photo'],
    );
  }
  //convert model to json
Map<StringdynamictoJson() => {
        "id": id,
        "title": title,
        "content": content,
        "photo": photo
    };
}



main.dart

import 'package:eshop/services/models/post.dart';
import 'package:eshop/services/service.dart';
import 'package:flutter/material.dart';

void main() => runApp(PostApp());

class PostApp extends StatefulWidget {
  @override
  _PostAppState createState() => _PostAppState();
}

class _PostAppState extends State<PostApp> {
  List<Post> posts=[]; //init empty to avoid null error at
  
  void loader() async {
    PostLoader instance=PostLoader();
    Future<List<Post>> object = instance.fetchPosts();
    object.then((List<Post> _posts) {
      // posts.forEach((element) => print(element.title));
      setState(() {
        posts = _posts;
      });
    });
  }

  @override
  void initState() {
    loader();
    super.initState();
  }

  Widget postTemplate(post) {
    return Card(
      child: ListTile(
        leading: CircleAvatar(
          backgroundImage: NetworkImage(post.photo),      
        ),
        title: Text(post.title),
        subtitle: Text(post.content.substring(0,50)+' .'),
        trailing: Icon(Icons.more_vert),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Posts List',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Post List'),          
        ),
        body: ListView.builder(
          itemCount: posts.length,
          itemBuilder: (context, index) {
            final item = posts[index];
            return postTemplate(item);
          },
        ),
      ),
    );
  }
}




گاهی این مشکل بوجود میاد که پروژه لاراول دیتابیس جدید رو شناسایی نمیکنه و اطلاعات رو از روی دیتابیسی که قبلا به پروژه متصل بوده میاره
برای حل این مشکل دو حالت وجود دارد : 

اگر در لوکال هاست دارین کار میکنین توی ترمینال پروژه :
 php artisan config:cache
اگر دارین روی هاست اصلی کار میکنین کافیه که فایل زیر رو دستی حذف کنین و بعد سایت رو رفرش کنید :
bootstrap/cache/config.php

پس از انجام این کار پروژه به دیتابیس جدید وصل میشود.

برای دانلود قالب های رایگان بوت استرپ و html به سایت زیر مراجعه کنید :
http://www.bootem.ir

اجرا کردن اپلیکیشن فلاتر روی ویندوز
درون CMD دستور زیر را اجرا کنید
flutter channel master
سپس دستور زیر 
flutter upgrade
این مطلب کامل نیست میتوانید از قسمت لینک های مرتبط مطالب مورد نظر خود را پیدا کنید
سپس دستور زیر ( ویندوز بصورت پیشفرض روی فلاتر غیرفعال است و با این دستور ان را فعال میکنیم )
flutter config --enable-windows-desktop
و بعد با اجرای دستور زیر میتوانید ویندوز خود را هم در لیست دستگاه های وصل شده مشاهده کنید
flutter devices
فلاتر برای دستکتاپ هنوز در حال توسعه است ( در تاریخ ارائه این مطلب امروز 9 اردیبهشت 99)
بنابراین نسخه ویندوزی کانفیگ شده ان را از لینک زیر clone میکنیم : 
درون تک تک فایل های plugins باید فایل pubspec.yaml تک به تک فایل هارو اجرا کنید که کلیه پکیج هارو بگیره

سپس  Development mode را در ویندوز خود از این طریق فعال کنید 
 Settings > Update & Security > For Developers and select Developer mode”.






زمانی که نیاز به نوشتن متن چند خطی دارید برای این که overflow نکند ان را درون یک container قرار داده و به آن width بدهید

بطور مثال :
Container(
          padding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 5.0),
          width: 350,
          child: Text(
              'Long text goes here'),
        ),






کافیه type را به این صورت به آن اضافه کنید 

  
bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,


fixed تغییر اندازه نمیدهد
shifting تغییر اندازه میدهد و بصورت پیشفرض همین است

دکمه  setting یا هر دکمه ای را ببریم پایین drawer در flutter

@override
  Widget build(BuildContext context) {
    return Drawer(
      // column holds all the widgets in the drawer
      child: Column(
        children: <Widget>[
          Expanded(
            // ListView contains a group of widgets that scroll inside the drawer
            child: ListView(
              children: <Widget>[
                ListTile(
                  leading: Icon(
                    Icons.archive,
                    size: 35,
                  ),
                  title: Text(
                    'Archive',
                    style: TextStyle(
                      fontSize: ,
                      fontFamily: 'NotoSansKR',
                    ),
                  ),
                  onTap: () {},
                ),
              ],
            ),
          ),
          // This container holds the align
          Container(
            // This align moves the children to the bottom
            child: Align(
              alignment: FractionalOffset.bottomCenter,
              // This container holds all the children that will be aligned
              // on the bottom and should not scroll with the above ListView
              child: Container(
                child: Column(
                  children: <Widget>[
                    Divider(),
                    ListTile(
                        leading: Icon(Icons.settings), title: Text('Settings')),
                    ListTile(
                        leading: Icon(Icons.help),
                        title: Text('Help and Feedback'))
                  ],
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }


Output


کافیست به جا drawer از endDrawer استفاده کنید .

از سمت چپ باز میشود 

 drawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,

از سمت راست باز میشود : 

 endDrawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,

این کد نمونه کامل یه appBar هست که قسمت leading همان ایکن یا دکمه یا لوگو یا هر چیزی که میخواین قبل از title در app bar نمایش داده شود قرار میگیرد :

 AppBar(
      leading: Builder(
        builder: (BuildContext context) {
          return IconButton(
            onPressed: () {},
            alignment: Alignment(50),
            icon: Icon(EvilIcons.camera, size: 40),
          );
        },
      ),
      title: Text(
        'Instagram',
        style: TextStyle(
          fontFamily: 'LobsterTwo',
          fontSize: 30.0,
          letterSpacing: 1.0,
        ),
      ),
      actions: <Widget>[
        IconButton(
          icon: Icon(
            EvilIcons.sc_telegram,
            size: 35,
          ),
          onPressed: () {},
        ),
      ],
    ),

البته اینی که نوشتم برای تاریخ میلادیه برای جلالی باید پکیج Verta رو نصب کنید و طبق داکیومنت اون پیش برید

$item->created_at->diffForHumans();
متد diffForHumans از کلاس Carbon هست برای مطالعه اطلاعات بیشتر در رابطه با این کلاس از لینک زیر دیدن کنید


سالم دوستان
بعضی وقتای شده که Laragon یا Xampp یا Wamp رو ( هر کدوم و که دارید ) باز میکنید ، یا MySql اجرا نمیشه یا اگر اجرا بشه  وقتی وارد localhost/phpmyadmin میشید و اطلاعات کاربری رو وارد میکنید لاگین نمیشه و خطای زیر را می دهد : 

mysqli_connect(): (HY000/2002): No connection could be made because the target machine actively refused it

برای حل این مشکل ابتدا برنامه خود را متوقف کنید بعد به با توجه به برنامه ای که استفاده میکنید به این فولدر بروید : 

در صورتی که از Laragon  استفاده می کنید :
laragon/data/mariadb-10.3 
در صورتی که از xampp استفاده میکنید :
xampp/mysql/data
تمام اطلاعات داخل ان را در جای دیگری کپی کنید و هر چه داخل فولدرت هست را پاک کنید. سپس برنامه را اجرا کنید ،
نکته : این پوشه حاوی اسم کلیه دیتابیس ها با کلی فایل لاگ هست.
وقتی برنامه اجرا شد وارد phpmyadmin بشین و به راحتی لاگین کنید. بعد برنامه رو متوقف کنید و 4 تا فایل با نام های زیر را از پوشه ای که فایل های قدیمی را در ان بک اپ گرفتید به پوشه اصلی منتقل کنید و جایگزین فایل های قبلی کنید.
ib_buffer_pool
ib_logfile0
ib_logfile1
ibdata1
دوباره سرویس خود را اجرا کنید و به راحتی از دیتابیس خود استفاده کنید.

به این روش میتوان ریسپانس خطای توکن که به این شکل هست را به شکلی که میخواهیم در بیاوریم :
حالت پیشفرض : 

{
    "message""Unauthenticated."
}


اضافه کردن این کد به App/Exceptions/Handler.php
این فایل رو هم use کنید : use Illuminate\Auth\AuthenticationException;

سپس این متد را به Handler اضافه کنید :

protected function unauthenticated($request, AuthenticationException $exception){    if ($request->expectsJson()) {        return response()->json(['isAuth'=>false, 'message' => $exception->getMessage()], 401);    }    $guard = array_get($exception->guards(),0);    switch ($guard) {        default:            $login = 'login';            break;    }    return redirect()->guest(route($login));}



این لینکش :
https://developer.android.com/studio/command-line/adb#wireless

اگر گوشیتون هوواوی هست ممکنه خطای زیر رو بده :
cannot connect to ?:5555: No connection could be made because the target machine actively refused it.

برای رفع این خطا این مطلب خونده بشه :
https://stackoverflow.com/questions/57401663/no-connection-could-be-made-because-the-target-machine-actively-refused-it-100

اگر توی انجام مراحل سوتی دادین این دستور و بزنید و دوباره مراحل و طی کنید:
adb kill-server

سلام خیلی سرویس شدم تا اینو درست شد 
لینک اصلی کد رو هم در پایین گذاشتم ، حتما ورژن های js و css خودشو دانلود کنید
https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/css/select2.min.css
قسمت Jquery : 
$('.select2').select2();

$('#add-supply').click(function () {
$element=$('select.select2');
$element.each(function(i,item){
$(item).data('select2').destroy();
});
var noOfDivs = $('.supply-row0').length;
var clonedDiv = $('.supply-row0').first().clone(true);
clonedDiv.insertBefore("#tool-placeholder");
clonedDiv.attr('id', 'select2' + noOfDivs);

$('.select2').select2();
});
قسمت html :

<div class="row supply-row0" id="supply-row0">
<div class="form-group col-md-2">
<select name="colors[]" class="select2 form-control block ">
<option value="none" selected="" disabled="">انتخاب رنگ</option>
<option value="">بدون رنگ</option>
@foreach($colors as $color)
<option value="{{$color->id}}" {{ old('colors') == $color->id ? 'selected' : '' }}>{{$color->title}}</option>
@endforeach
</select>
</div>
<div class="form-group col-md-2">
<select name="sizes[]" class="select2 form-control block" id="">
<option value="none" selected="" disabled="">انتخاب سایز</option>
<option value="">بدون سایز</option>
@foreach($sizes as $size)
<option value="{{$size->id}}" {{ old('sizes') == $size->id ? 'selected' : '' }}>{{$size->title}}</option>
@endforeach
</select>
</div>
<div class="form-group col-md-3">
<div class="input-group">
<input name="prices[]" type="text" class="form-control" placeholder="قیمت اصلی" aria-label="" value="{{old('prices')}}">
<div class="input-group-append">
<span class="input-group-text">تومان</span>
</div>
</div>
</div>
<div class="form-group col-md-2">
<input type="text" class="form-control" placeholder="تعداد" aria-label="" name="count[]" value="{{old('count')}}">
</div>
<div class="form-group col-md-3">
<select name="unit_id" class="select2 form-control block" id="">
<option value="none" selected="" disabled="">واحد اندازه گیری</option>
@foreach($units as $unit)
<option value="{{$unit->id}}" {{ old('units') == $unit->id ? 'selected' : '' }}>{{$unit->title}}</option>
@endforeach
</select>
</div>
</div>
<div id="tool-placeholder"></div>

</div>


چنانچه موقع نصب پکیج لاراول با خطای زیر مواجه شدین

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

کافیه که قبل از دستور Composer require عبارت COMPOSER_MEMORY_LIMIT=-1 را بنویسید
بطوری مثال : 

COMPOSER_MEMORY_LIMIT=-1 composer require shetabit/payment

وقتی داشتم واسه ی یک اپلیکیشنی که statemanagementش با MobX بود لاگ اوت مینوشتم بعد از لاگین مجددا خطای '_history.isNotEmpty': is not true. میداد

بعد از لاگ اوت حتما باید کل stack خالی بشه یعنی هر چی اسکرین تا الان باز شده بطور کامل بسته بشه و به صفحه لاگین بریم اینطوری : 

 onTap: () {
                        authServiceInstance.logout();
                        //pop all these pages is needed
                        Navigator.popAndPushNamed(
                          context,
                          '/login',
                        );
                      },

وقتی داشتم واسه ی یک اپلیکیشنی که statemanagementش با MobX بود لاگ اوت مینوشتم بعد از لاگین مجددا خطای '_history.isNotEmpty': is not true. میداد

بعد از لاگ اوت حتما باید کل stack خالی بشه یعنی هر چی اسکرین تا الان باز شده بطور کامل بسته بشه و به صفحه لاگین بریم اینطوری : 

 onTap: () {
                        authServiceInstance.logout();
                        //pop all these pages is needed
                        Navigator.popAndPushNamed(
                          context,
                          '/login',
                        );
                      },

آخرین مطالب

آخرین جستجو ها

دختر خوشحال دل نوشته های من suntajohndo phyracalday choadanriala سراج هیات پیامبر اعظم صلی الله علیه و آله روستای سوخته سرا خرید و فروش باغ ویلا در شهریار و ملارد بازرسی جوش درگاه رسمی اطلاع رسانی فعّالیّـت های علمی پژوهشی دکتر رضا دادگر