logo icon
Taninut.com

143

 
 
 
Content ID143
Category ID3
Writer ID(not set)
User ID(not set)
Lang Modeth
Content Name Dio package การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET 
Content UrlDio-package-การกำหนด-options-BaseOptions-queryParameters-ในการส่ง-request-แบบ-GET 
Content Desc<p>การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET&nbsp; &nbsp;ใน Dio package สามารถทำได้ดังนี้</p>
<p>ตัวอย่างที่ 1 :</p>
<p style="padding-left: 40px;"><code>import 'package:flutter/material.dart';</code><br><code>import 'package:dio/dio.dart';</code></p>
<p style="padding-left: 40px;"><code>class ApiExample extends StatefulWidget {</code><br><code>&nbsp; @override</code><br><code>&nbsp; _ApiExampleState createState() =&gt; _ApiExampleState();</code><br><code>}</code></p>
<p style="padding-left: 40px;"><code>class _ApiExampleState extends State&lt;ApiExample&gt; {</code><br><code>&nbsp; List&lt;dynamic&gt; _posts = [];</code></p>
<p style="padding-left: 40px;"><code>&nbsp; @override</code><br><code>&nbsp; void initState() {</code><br><code>&nbsp; &nbsp; super.initState();</code><br><code>&nbsp; &nbsp; _fetchPosts();</code><br><code>&nbsp; }</code></p>
<p style="padding-left: 40px;"><code>&nbsp; Future&lt;void&gt; _fetchPosts() async {</code><br><code>&nbsp; &nbsp; try {</code><br><code>&nbsp; &nbsp; &nbsp; final dio = Dio(BaseOptions(</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; baseUrl: 'https://jsonplaceholder.typicode.com',</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; connectTimeout: 5000, // 5 seconds</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; receiveTimeout: 5000, // 5 seconds</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; headers: {</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Content-Type': 'application/json',</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Accept': 'application/json',</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; },</code><br><code>&nbsp; &nbsp; &nbsp; ));</code></p>
<p style="padding-left: 40px;"><code>&nbsp; &nbsp; &nbsp; final response = await dio.get('/posts', queryParameters: {</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; 'userId': 1,</code><br><code>&nbsp; &nbsp; &nbsp; }, options: Options(</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; headers: {</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Authorization': 'Bearer token',</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; },</code><br><code>&nbsp; &nbsp; &nbsp; ));</code></p>
<p style="padding-left: 40px;"><code>&nbsp; &nbsp; &nbsp; if (response.statusCode == 200) {</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; setState(() {</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _posts = response.data;</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; });</code><br><code>&nbsp; &nbsp; &nbsp; } else { <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScaffoldMessenger.of(context).showSnackBar( <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SnackBar(content: Text('Error fetching posts')), <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;); <br>&nbsp; &nbsp; &nbsp; }</code><br><code>&nbsp; &nbsp; } catch (error) {</code><br><code>&nbsp; &nbsp; &nbsp; //print('Error fetching posts: $error');<br>&nbsp; &nbsp; &nbsp; &nbsp;ScaffoldMessenger.of(context).showSnackBar( <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SnackBar(content: Text('Error fetching posts: $error')), <br>&nbsp; &nbsp; &nbsp; &nbsp;);</code><br><code>&nbsp; &nbsp; }</code><br><code>&nbsp; }</code></p>
<p style="padding-left: 40px;"><code>&nbsp; @override</code><br><code>&nbsp; Widget build(BuildContext context) {</code><br><code>&nbsp; &nbsp; return Scaffold(</code><br><code>&nbsp; &nbsp; &nbsp; appBar: AppBar(</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; title: Text('API Example'),</code><br><code>&nbsp; &nbsp; &nbsp; ),</code><br><code>&nbsp; &nbsp; &nbsp; body: ListView.builder(</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; itemCount: _posts.length,</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; itemBuilder: (BuildContext context, int index) {</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final post = _posts[index];</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return ListTile(</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title: Text(post['title']),</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; subtitle: Text(post['body']),</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );</code><br><code>&nbsp; &nbsp; &nbsp; &nbsp; },</code><br><code>&nbsp; &nbsp; &nbsp; ),</code><br><code>&nbsp; &nbsp; );</code><br><code>&nbsp; }</code><br><code>}</code></p>
<p style="padding-left: 40px;">&nbsp;</p>
<p>ในตัวอย่างโค้ดข้างต้น ฟังก์ชัน <code>_fetchPosts</code> จะกำหนด options ด้วย <code>BaseOptions</code> ซึ่งระบุค่าเช่น <code>baseUrl</code>, <code>connectTimeout</code>, <code>receiveTimeout</code>, และ <code>headers</code> สำหรับการเชื่อมต่อ API ดังนี้</p>
<p style="padding-left: 40px;"><code>final dio = Dio(BaseOptions(</code><br><code>&nbsp; baseUrl: 'https://jsonplaceholder.typicode.com',</code><br><code>&nbsp; connectTimeout: 5000, // 5 seconds</code><br><code>&nbsp; receiveTimeout: 5000, // 5 seconds</code><br><code>&nbsp; headers: {</code><br><code>&nbsp; &nbsp; 'Content-Type': 'application/json',</code><br><code>&nbsp; &nbsp; 'Accept': 'application/json',</code><br><code>&nbsp; },</code><br><code>));</code></p>
<p style="padding-left: 40px;">&nbsp;</p>
<p>ฟังก์ชัน <code>_fetchPosts</code> ยังใช้ <code>queryParameters</code> เพื่อระบุค่า <code>userId</code> สำหรับการเรียก API เพิ่มเติม ดังนี้</p>
<p style="padding-left: 40px;"><code>final response = await dio.get('/posts', queryParameters: {</code><br><code>&nbsp; 'userId': 1,</code><br><code>}, options: Options(</code><br><code>&nbsp; headers: {</code><br><code>&nbsp; &nbsp; 'Authorization': 'Bearer token',</code><br><code>&nbsp; },</code><br><code>));</code></p>
<p style="padding-left: 40px;">&nbsp;</p>
<div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654]">
<div class="text-base gap-4 md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0 m-auto">
<div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>สุดท้าย ฟังก์ชัน <code>build</code> จะใช้ ListView.builder เพื่อแสดงผลข้อมูลที่ได้จาก API ตามปกติ</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<hr></div>
</div>
</div>
<div class="flex justify-between lg:block">
<div class="text-gray-400 flex self-end lg:self-center justify-center mt-2 gap-2 md:gap-3 lg:gap-1 lg:absolute lg:top-0 lg:translate-x-full lg:right-0 lg:mt-0 lg:pl-2 visible">&nbsp;</div>
</div>
</div>
</div>
</div>
Content Short
Content View2548
Content Thumb Highlight
Content Thumb/uploads/article/zGE9Q7e3PB.png
Content Img Alt Dio package การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET 
Content Tag
Content Date(not set)
Active Status1
Sort99999
Meta Title Dio package การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET 
Meta Desc Dio package การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET 
Meta Keyword Dio package,BaseOptions,queryParameters,Flutter
Og Title Dio package การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET 
Og Desc Dio package การกำหนด options BaseOptions, queryParameters ในการส่ง request แบบ GET 
Status1
Create Date Time2023-03-30 12:55:46
Update Date Time2023-04-01 13:08:13
Create By
Update By