جستجو برای:
سبد خرید 0
  • خانه
  • دوره های آموزشی
    • دوره های حضوری و آنلاین
      • دوره جامع برنامه نویسی اندروید
      • دوره جامع برنامه نویسی فلاتر
      • دوره برنامه نویسی React Native
      • دوره آموزشی برنامه نویسی iOS
    • دوره های متخصص و حرفه ای
      • دوره متخصص اندروید (پروژه محور)
      • دوره متخصص فلاتر (پروژه محور)
      • دوره آموزش امنیت در اندروید
      • دوره درآمدزایی دلاری از گوگل پلی در ایران
  • آموزش رایگان
    • دوره رایگان اندروید
    • دوره رایگان فلاتر
  • مشاورهجدید
  • دوره VIP
  • وبلاگ
ورود
گذرواژه خود را فراموش کرده اید؟
عضویت

اطلاعات شخصی شما برای پردازش سفارش شما استفاده می‌شود، و پشتیبانی از تجربه شما در این وبسایت، و برای اهداف دیگری که در سیاست حفظ حریم خصوصی توضیح داده شده است.

ارسال مجدد کد یکبار مصرف (00:60)
  • 02188945907
  • info@amooznegar.com
  • لیست علاقه مندی ها
آکادمی آموزنگار
  • خانه
  • دوره های آموزشی
    • دوره های حضوری و آنلاین
      • دوره جامع برنامه نویسی اندروید
      • دوره جامع برنامه نویسی فلاتر
      • دوره برنامه نویسی React Native
      • دوره آموزشی برنامه نویسی iOS
    • دوره های متخصص و حرفه ای
      • دوره متخصص اندروید (پروژه محور)
      • دوره متخصص فلاتر (پروژه محور)
      • دوره آموزش امنیت در اندروید
      • دوره درآمدزایی دلاری از گوگل پلی در ایران
  • آموزش رایگان
    • دوره رایگان اندروید
    • دوره رایگان فلاتر
  • مشاورهجدید
  • دوره VIP
  • وبلاگ
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0

وبلاگ

آکادمی آموزنگار > اخبار > برنامه نویسی > فلاتر > آموزش Dio و Retrofit در فلاتر

آموزش Dio و Retrofit در فلاتر

1404-01-04
ارسال شده توسط آموزنگار
فلاتر
آموزش Dio و Retrofit در فلاتر

در دنیای توسعه اپلیکیشن‌های موبایل، ارتباط با وب‌سرویس‌ها (Web Services) یکی از نیازهای اساسی است. اپلیکیشن‌های مدرن معمولاً برای دریافت یا ارسال داده‌ها به سرور، از APIهای RESTful استفاده می‌کنند. در فلاتر، برای برقراری ارتباط با سرور، کتابخانه‌های متعددی وجود دارند که Dio و Retrofit از محبوب‌ترین آن‌ها هستند.

در این آموزش، ابتدا با مفاهیم وب سرویس و پروتکل HTTP آشنا می‌شویم، سپس نحوه پیاده‌سازی و استفاده از Dio و Retrofit را به صورت عملی در فلاتر بررسی خواهیم کرد.

🌐 وب سرویس چیست؟

وب سرویس به مجموعه‌ای از پروتکل‌ها و استانداردها گفته می‌شود که برای تبادل اطلاعات بین برنامه‌های مختلف از طریق اینترنت استفاده می‌شود. وب سرویس‌ها می‌توانند داده‌ها را از سمت سرور به کلاینت (موبایل یا وب) ارسال یا دریافت کنند.

💡 انواع وب سرویس‌ها

  1. REST (Representational State Transfer):
    • از پروتکل HTTP برای تبادل اطلاعات استفاده می‌کند.
    • ساختار ساده‌ای دارد و بیشتر اپلیکیشن‌های موبایل از این نوع وب‌سرویس بهره می‌برند.
  2. SOAP (Simple Object Access Protocol):
    • پروتکلی پیچیده‌تر و مبتنی بر XML است.
    • کمتر در توسعه موبایل مورد استفاده قرار می‌گیرد.
وب سرویس‌

🔥 متدهای پروتکل HTTP

در ارتباط با وب سرویس‌های RESTful، از متدهای HTTP زیر برای انتقال اطلاعات استفاده می‌شود:

متدهای پروتکل HTTP
متدتوضیح
GETدریافت اطلاعات از سرور
POSTارسال داده به سرور
PUTبه‌روزرسانی کامل داده
PATCHبه‌روزرسانی جزئی داده
DELETEحذف داده از سرور

🚀 کتابخانه‌های وب سرویس در فلاتر

در فلاتر، برای برقراری ارتباط با وب سرویس می‌توان از کتابخانه‌های مختلفی استفاده کرد:

  1. http: کتابخانه پیش‌فرض فلاتر برای ارسال درخواست‌های ساده.
  2. Dio: کتابخانه‌ای قدرتمند با قابلیت‌های پیشرفته مثل مدیریت Timeout، Interceptor، Multipart و پشتیبانی از JSON serialization.
  3. Retrofit: کتابخانه‌ای بر پایه Dio که برای ایجاد API Client با قابلیت‌های Code Generation استفاده می‌شود.
  4. Chopper: کتابخانه دیگری که برای ساخت کلاینت‌های REST استفاده می‌شود.
آموزش استفاده از تبلیغات Admob در برنامه نویسی فلاتر
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

✅ ما در این آموزش Dio و Retrofit در فلاتر را استفاده می‌کنیم.

⚙️ آشنایی با کتابخانه Dio و امکانات آن

dio در فلاتر

Dio یک کتابخانه HTTP پیشرفته برای فلاتر است که ویژگی‌های قدرتمندی مانند موارد زیر دارد:

  • پشتیبانی از درخواست‌های GET، POST، PUT، DELETE
  • مدیریت خطاها و Timeout
  • پشتیبانی از Interceptor
  • قابلیت Multipart Upload برای آپلود فایل‌ها
  • تبدیل خودکار JSON به Object
  • مدیریت Headerها و Token

🛠️ پیاده‌سازی Retrofit با Dio در فلاتر

پیاده‌سازی Dio و Retrofit

در این بخش نحوه راه‌اندازی و استفاده از Dio و Retrofit را به صورت عملی پیاده‌سازی می‌کنیم.

1️⃣ اضافه کردن پکیج‌ها به pubspec.yaml:

ابتدا کتابخانه‌های موردنیاز را به پروژه اضافه کنید:

1
2
3
4
5
6
7
8
9
10
11
12
dependencies:
  flutter:
    sdk: flutter
  dio: ^5.4.0
  retrofit: ^4.0.3
  json_annotation: ^4.8.1
  logger: ^2.0.2+1
  flutter_bloc: ^8.1.3
  equatable: ^2.0.5
  freezed_annotation: ^2.2.0
  build_runner: ^2.3.3
  retrofit_generator: ^8.0.2

✅ دستور زیر را برای نصب پکیج‌ها اجرا کنید:

1
flutter pub get

2️⃣ ایجاد مدل داده

داخل فولدر lib/models فایلی به نام user_model.dart ایجاد کنید و مدل خود را بنویسید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import 'package:json_annotation/json_annotation.dart';
 
part 'user_model.g.dart';
 
@JsonSerializable()
class UserModel {
  final int id;
  final String name;
  final String email;
 
  UserModel({required this.id, required this.name, required this.email});
 
  factory UserModel.fromJson(Map<String, dynamic> json) => _$UserModelFromJson(json);
 
  Map<String, dynamic> toJson() => _$UserModelToJson(this);
}

✅ برای تولید فایل‌های JSON، دستور زیر را اجرا کنید:

1
flutter pub run build_runner build --delete-conflicting-outputs

3️⃣ ایجاد کلاینت Retrofit

یک فایل جدید به نام api_service.dart در مسیر lib/api/ ایجاد کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import 'package:dio/dio.dart';
import 'package:retrofit/http.dart';
import '../models/user_model.dart';
 
part 'api_service.g.dart';
 
@RestApi(baseUrl: "https://jsonplaceholder.typicode.com")
abstract class ApiService {
  factory ApiService(Dio dio, {String baseUrl}) = _ApiService;
 
  @GET("/users")
  Future<List<UserModel>> getUsers();
 
  @POST("/users")
  Future<UserModel> createUser(@Body() UserModel user);
 
  @PUT("/users/{id}")
  Future<UserModel> updateUser(@Path("id") int id, @Body() UserModel user);
 
  @DELETE("/users/{id}")
  Future<void> deleteUser(@Path("id") int id);
}

✅ حالا دستور زیر را برای تولید فایل‌های Retrofit اجرا کنید:

1
flutter pub run build_runner build --delete-conflicting-outputs

4️⃣ ایجاد Repository

در مسیر lib/repository/ یک فایل به نام user_repository.dart ایجاد کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import 'package:dio/dio.dart';
import '../api/api_service.dart';
import '../models/user_model.dart';
 
class UserRepository {
  final ApiService apiService;
 
  UserRepository({required this.apiService});
 
  Future<List<UserModel>> getUsers() async {
    return await apiService.getUsers();
  }
 
  Future<UserModel> createUser(UserModel user) async {
    return await apiService.createUser(user);
  }
 
  Future<UserModel> updateUser(int id, UserModel user) async {
    return await apiService.updateUser(id, user);
  }
 
  Future<void> deleteUser(int id) async {
    await apiService.deleteUser(id);
  }
}

⚡️ پیاده‌سازی مثال عملی

در lib/main.dart کد زیر را اضافه کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'api/api_service.dart';
import 'models/user_model.dart';
 
void main() {
  runApp(const MyApp());
}
 
class MyApp extends StatelessWidget {
  const MyApp({super.key});
 
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}
 
class HomePage extends StatefulWidget {
  const HomePage({super.key});
 
  @override
  State<HomePage> createState() => _HomePageState();
}
 
class _HomePageState extends State<HomePage> {
  late ApiService apiService;
 
  @override
  void initState() {
    super.initState();
    final dio = Dio();
    apiService = ApiService(dio);
  }
 
  Future<void> fetchUsers() async {
    List<UserModel> users = await apiService.getUsers();
    for (var user in users) {
      print('User: ${user.name}');
    }
  }
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text("Dio + Retrofit")),
      body: Center(
        child: ElevatedButton(
          onPressed: fetchUsers,
          child: const Text("Fetch Users"),
        ),
      ),
    );
  }
}

🎯 نتیجه‌گیری

در این آموزش:

  • با مفاهیم وب سرویس و متدهای HTTP آشنا شدیم.
  • کتابخانه‌های مهم فلاتر برای مدیریت وب‌سرویس را بررسی کردیم.
  • پیاده‌سازی Dio و Retrofit را انجام دادیم.
  • یک مثال عملی از ارتباط با سرور را ایجاد کردیم.
دریافت اطلاعات باتری تلفن همراه در فلاتر
خواندن این مقاله
قدرت گرفته از افزونه نوشته‌های مرتبط هوشمند

🔥 حالا می‌توانید با Dio و Retrofit به راحتی APIهای پیشرفته را در پروژه‌های فلاتر خود مدیریت کنید. 🚀

قبلی زبان برنامه نویسی بازی Grand Theft Auto V چیست؟
بعدی چگونه خروجی PWA در فلاتر بگیریم؟

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • GoLang
  • jetpack compose
  • PHP
  • اپلیکیشن
  • امنیت
  • اندروید
  • اوپن سورس
  • برنامه نویسی
  • برنامه نویسی iOS
  • برنامه نویسی react native
  • پادکست صوتی
  • تکنولوژی
  • جاوا
  • طراح رابط کاربری
  • طراحی رابط کاربری
  • طراحی وب
  • عمومی
  • فریلنسر
  • فلاتر
  • فناوری
  • کاتلین
  • کتاب های آموزشی
  • کسب و کار
  • هوش مصنوعی
  • وردپرس
برچسب‌ها
admob coroutine dagger dagger-hilt jetpack nft rxandroid rxjava spring swift ارز دیجیتال امنیت در اندروید دارت فایربیس فوشیا مصاحبه کاری معماری mvi نقشه راه برنامه نویسی کاتلین گوگل

آکادمی آموزنگار، جایی برای آغاز یک سفر شگفت‌انگیز در دنیای برنامه‌نویسی است. آموزنگار تلاش می‌کند تا هر فردی را از هر سطحی از زندگی و تجربه به دنیای جذاب برنامه‌نویسی وارد کند.

دسترسی سریع
  • درباره ما
  • تماس با ما
  • حریم خصوصی
  • سوالات متداول
نمادها
شبکه های اجتماعی
Facebook Twitter Youtube icon--white Whatsapp

تهران، میدان ولی عصر،خیابان شهیدان سازش،کوچه سوم پلاک 5 طبقه سوم واحد 31

021-88945907

تمامی حقوق برای آکادمی آموزنگار محفوظ می باشد

اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://amooznegar.com/?p=13952
  • Afghanistan (+93)
  • Albania (+355)
  • Algeria (+213)
  • American Samoa (+1)
  • Andorra (+376)
  • Angola (+244)
  • Anguilla (+1)
  • Antigua (+1)
  • Argentina (+54)
  • Armenia (+374)
  • Aruba (+297)
  • Australia (+61)
  • Austria (+43)
  • Azerbaijan (+994)
  • Bahrain (+973)
  • Bangladesh (+880)
  • Barbados (+1)
  • Belarus (+375)
  • Belgium (+32)
  • Belize (+501)
  • Benin (+229)
  • Bermuda (+1)
  • Bhutan (+975)
  • Bolivia (+591)
  • Bonaire, Sint Eustatius and Saba (+599)
  • Bosnia and Herzegovina (+387)
  • Botswana (+267)
  • Brazil (+55)
  • British Indian Ocean Territory (+246)
  • British Virgin Islands (+1)
  • Brunei (+673)
  • Bulgaria (+359)
  • Burkina Faso (+226)
  • Burundi (+257)
  • Cambodia (+855)
  • Cameroon (+237)
  • Canada (+1)
  • Cape Verde (+238)
  • Cayman Islands (+1)
  • Central African Republic (+236)
  • Chad (+235)
  • Chile (+56)
  • China (+86)
  • Colombia (+57)
  • Comoros (+269)
  • Cook Islands (+682)
  • Côte d'Ivoire (+225)
  • Costa Rica (+506)
  • Croatia (+385)
  • Cuba (+53)
  • Curaçao (+599)
  • Cyprus (+357)
  • Czech Republic (+420)
  • Democratic Republic of the Congo (+243)
  • Denmark (+45)
  • Djibouti (+253)
  • Dominica (+1)
  • Dominican Republic (+1)
  • Ecuador (+593)
  • Egypt (+20)
  • El Salvador (+503)
  • Equatorial Guinea (+240)
  • Eritrea (+291)
  • Estonia (+372)
  • Ethiopia (+251)
  • Falkland Islands (+500)
  • Faroe Islands (+298)
  • Federated States of Micronesia (+691)
  • Fiji (+679)
  • Finland (+358)
  • France (+33)
  • French Guiana (+594)
  • French Polynesia (+689)
  • Gabon (+241)
  • Georgia (+995)
  • Germany (+49)
  • Ghana (+233)
  • Gibraltar (+350)
  • Greece (+30)
  • Greenland (+299)
  • Grenada (+1)
  • Guadeloupe (+590)
  • Guam (+1)
  • Guatemala (+502)
  • Guernsey (+44)
  • Guinea (+224)
  • Guinea-Bissau (+245)
  • Guyana (+592)
  • Haiti (+509)
  • Honduras (+504)
  • Hong Kong (+852)
  • Hungary (+36)
  • Iceland (+354)
  • India (+91)
  • Indonesia (+62)
  • Iran (+98)
  • Iraq (+964)
  • Ireland (+353)
  • Isle Of Man (+44)
  • Israel (+972)
  • Italy (+39)
  • Jamaica (+1)
  • Japan (+81)
  • Jersey (+44)
  • Jordan (+962)
  • Kazakhstan (+7)
  • Kenya (+254)
  • Kiribati (+686)
  • Kuwait (+965)
  • Kyrgyzstan (+996)
  • Laos (+856)
  • Latvia (+371)
  • Lebanon (+961)
  • Lesotho (+266)
  • Liberia (+231)
  • Libya (+218)
  • Liechtenstein (+423)
  • Lithuania (+370)
  • Luxembourg (+352)
  • Macau (+853)
  • Macedonia (+389)
  • Madagascar (+261)
  • Malawi (+265)
  • Malaysia (+60)
  • Maldives (+960)
  • Mali (+223)
  • Malta (+356)
  • Marshall Islands (+692)
  • Martinique (+596)
  • Mauritania (+222)
  • Mauritius (+230)
  • Mayotte (+262)
  • Mexico (+52)
  • Moldova (+373)
  • Monaco (+377)
  • Mongolia (+976)
  • Montenegro (+382)
  • Montserrat (+1)
  • Morocco (+212)
  • Mozambique (+258)
  • Myanmar (+95)
  • Namibia (+264)
  • Nauru (+674)
  • Nepal (+977)
  • Netherlands (+31)
  • New Caledonia (+687)
  • New Zealand (+64)
  • Nicaragua (+505)
  • Niger (+227)
  • Nigeria (+234)
  • Niue (+683)
  • Norfolk Island (+672)
  • North Korea (+850)
  • Northern Mariana Islands (+1)
  • Norway (+47)
  • Oman (+968)
  • Pakistan (+92)
  • Palau (+680)
  • Palestine (+970)
  • Panama (+507)
  • Papua New Guinea (+675)
  • Paraguay (+595)
  • Peru (+51)
  • Philippines (+63)
  • Poland (+48)
  • Portugal (+351)
  • Puerto Rico (+1)
  • Qatar (+974)
  • Republic of the Congo (+242)
  • Romania (+40)
  • Reunion (+262)
  • Russia (+7)
  • Rwanda (+250)
  • Saint Helena (+290)
  • Saint Kitts and Nevis (+1)
  • Saint Pierre and Miquelon (+508)
  • Saint Vincent and the Grenadines (+1)
  • Samoa (+685)
  • San Marino (+378)
  • Sao Tome and Principe (+239)
  • Saudi Arabia (+966)
  • Senegal (+221)
  • Serbia (+381)
  • Seychelles (+248)
  • Sierra Leone (+232)
  • Singapore (+65)
  • Sint Maarten (+1)
  • Slovakia (+421)
  • Slovenia (+386)
  • Solomon Islands (+677)
  • Somalia (+252)
  • South Africa (+27)
  • South Korea (+82)
  • South Sudan (+211)
  • Spain (+34)
  • Sri Lanka (+94)
  • St. Lucia (+1)
  • Sudan (+249)
  • Suriname (+597)
  • Swaziland (+268)
  • Sweden (+46)
  • Switzerland (+41)
  • Syria (+963)
  • Taiwan (+886)
  • Tajikistan (+992)
  • Tanzania (+255)
  • Thailand (+66)
  • The Bahamas (+1)
  • The Gambia (+220)
  • Timor-Leste (+670)
  • Togo (+228)
  • Tokelau (+690)
  • Tonga (+676)
  • Trinidad and Tobago (+1)
  • Tunisia (+216)
  • Turkey (+90)
  • Turkmenistan (+993)
  • Turks and Caicos Islands (+1)
  • Tuvalu (+688)
  • U.S. Virgin Islands (+1)
  • Uganda (+256)
  • Ukraine (+380)
  • United Arab Emirates (+971)
  • United Kingdom (+44)
  • United States (+1)
  • Uruguay (+598)
  • Uzbekistan (+998)
  • Vanuatu (+678)
  • Venezuela (+58)
  • Vietnam (+84)
  • Wallis and Futuna (+681)
  • Western Sahara (+212)
  • Yemen (+967)
  • Zambia (+260)
  • Zimbabwe (+263)
مرورگر شما از HTML5 پشتیبانی نمی کند.

سوالی دارید؟ از ما بپرسید، کارشناسان ما در اسرع وقت با شما تماس می گیرند.

آموزنگار

آکادمی آموزنگار

  • 021-88945907
  • شنبه تا چهارشنبه از ساعت 8 تا 17
  • info@amooznegar.com
ورود
استفاده از شماره تلفن
استفاده از آدرس ایمیل
آیا هنوز عضو نشده اید؟ ثبت نام کنید
بازیابی رمز عبور
استفاده از شماره تلفن
استفاده از آدرس ایمیل
ثبت نام
استفاده از شماره تلفن
استفاده از ایمیل
قبلا عضو شده اید؟ ورود به سیستم
محافظت توسط