<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="https://publishpress.com/"
	>

<channel>
	<title>Le Quoc, Author at Tomoshare</title>
	<atom:link href="https://blog.tomosia.com.vn/author/lequoc/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.tomosia.com.vn/author/lequoc/</link>
	<description>Kênh chia sẻ kiến thức Tomosia Việt Nam</description>
	<lastBuildDate>Sun, 08 Oct 2023 14:51:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.tomosia.com.vn/wp-content/uploads/2023/09/cropped-icon-32x32.png</url>
	<title>Le Quoc, Author at Tomoshare</title>
	<link>https://blog.tomosia.com.vn/author/lequoc/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SwiftUI vs Flutter : Cách xây dựng UI</title>
		<link>https://blog.tomosia.com.vn/swiftui-vs-flutter-cach-xay-dung-ui/</link>
					<comments>https://blog.tomosia.com.vn/swiftui-vs-flutter-cach-xay-dung-ui/#comments</comments>
		
		<dc:creator><![CDATA[Le Quoc]]></dc:creator>
		<pubDate>Sun, 08 Oct 2023 08:30:34 +0000</pubDate>
				<category><![CDATA[IOS]]></category>
		<category><![CDATA[Flutter]]></category>
		<guid isPermaLink="false">https://blog.tomosia.com.vn/?p=934</guid>

					<description><![CDATA[<p>Giới thiệu Vào đầu năm 2019, Flutter phiên bản 1.0 đã được phát hành chính thức. Còn SwiftUI&#8230;</p>
<p>The post <a href="https://blog.tomosia.com.vn/swiftui-vs-flutter-cach-xay-dung-ui/">SwiftUI vs Flutter : Cách xây dựng UI</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="427" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-1024x427.png" alt="" class="wp-image-935" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-1024x427.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-300x125.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-768x320.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-380x158.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-800x333.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0-1160x483.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h0.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="gioi-thieu" class="wp-block-heading">Giới thiệu</h2>



<p>Vào đầu năm 2019, Flutter phiên bản 1.0 đã được phát hành chính thức. Còn SwiftUI cũng được giới thiệu bởi Apple vào năm 2019, Apple nói rằng SwiftUI là tương lai của việc phát triển ứng dụng trên các nền tảng của Apple (vì nó là đa nền tảng, cho phép bạn phát triển ứng dụng iOS, MacOS, WatchOS và tvOS chỉ bằng một mã nguồn duy nhất).</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Thay vì nói lí thuyết, ta sẽ thử viết 1 màn hình để play video. Xuyên suốt quá trình dựng UI, chúng ta sẽ cùng code và phân tích ưu điểm của mỗi framework nhé.</p>
</blockquote>



<h2 id="1-ui-tong-quan" class="wp-block-heading">1/ UI tổng quan</h2>



<p><strong>Flutter</strong> trước nhé.</p>



<p><strong>TopView</strong> class sẽ hiển thị tabs, ta sẽ tạo class <strong>HomeView</strong>. Ở <strong>HomeView</strong>, ta dùng widget <strong>CupertinoPageScaffold</strong>. Sẽ có <strong>navi</strong>, và 1 <strong>SingleChildScrollView</strong> để đảm bảo tính đầy đủ dữ liệu ở các thiết bị màn hình nhỏ.</p>



<p><strong>TopView</strong> và <strong>HomeView</strong> kế thừa từ StatefulWidget.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="875" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-1024x875.png" alt="" class="wp-image-936" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-1024x875.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-300x256.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-768x656.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-1536x1312.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-380x325.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-800x683.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1-1160x991.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/1.png 1702w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="845" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-1024x845.png" alt="" class="wp-image-938" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-1024x845.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-300x248.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-768x634.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-1536x1268.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-380x314.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-800x660.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1-1160x958.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/2-1.png 1696w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Rồi, đến <strong>SwiftUI</strong>, cũng sẽ hiển thị tabs tương tự</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="692" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-1024x692.png" alt="" class="wp-image-941" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-1024x692.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-300x203.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-768x519.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-380x257.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-800x541.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1-1160x784.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/Screen-Shot-2023-10-08-at-15.08.24-1.png 1438w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>HomeScreen</strong> struct sẽ hiển thị video player và danh sách video.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="499" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-1024x499.png" alt="" class="wp-image-939" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-1024x499.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-300x146.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-768x375.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-1536x749.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-2048x999.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-380x185.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-800x390.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3-1160x566.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/3.png 2116w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="2-ui-ve-video-player" class="wp-block-heading"><strong>2/ UI về video player</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="632" height="1024" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h4-632x1024.webp" alt="" class="wp-image-942" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h4-632x1024.webp 632w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h4-185x300.webp 185w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h4-380x615.webp 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h4.webp 704w" sizes="auto, (max-width: 632px) 100vw, 632px" /></figure>



<p>Về phía <strong>Flutter</strong>, mỗi UI element được đặt trong 1 vị trí thích hợp bằng cách set <strong>MainAxisAlignment</strong> của <strong>Column</strong> widget và <strong>Row</strong> widget. <strong>CupertinoSlider</strong> widget sẽ đảm nhận việc hiển thị thanh slider. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1014" height="1024" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-1014x1024.png" alt="" class="wp-image-943" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-1014x1024.png 1014w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-297x300.png 297w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-150x150.png 150w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-768x776.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-80x80.png 80w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-380x384.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-800x808.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6-1160x1171.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/6.png 1428w" sizes="auto, (max-width: 1014px) 100vw, 1014px" /></figure>



<p>Đối với <strong>SwiftUI</strong>, <strong>BigMovieCellOverlay</strong> struct sẽ đảm nhận việc hiển thị player thông qua <strong>VStack</strong> và <strong>HStack</strong>. <strong>Rectangle</strong> được bọc trong <strong>ZStack</strong> sẽ đóng vai trò <strong>Slider</strong> progress của video. </p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="822" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-1024x822.png" alt="" class="wp-image-944" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-1024x822.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-300x241.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-768x617.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-1536x1234.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-380x305.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-800x643.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7-1160x932.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/7.png 1880w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="3-ui-ve-list" class="wp-block-heading">3/ UI về List</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="539" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-1024x539.png" alt="" class="wp-image-945" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-1024x539.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-300x158.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-768x404.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-380x200.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-800x421.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8-1160x610.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/8.png 1266w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="a-scroll-ngang" class="wp-block-heading">a/ Scroll ngang</h2>



<p>Về phía <strong>Flutter</strong>, Widget <strong>ListView</strong> trong <strong>Broadcasting</strong> được set <strong>Axis.horizontal</strong>, được xếp chồng bằng cách sử dụng <strong>Stack</strong>. Mỗi thumbnail được triển khai trong lớp <strong>BigPicCell</strong> được mô tả bên dưới.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="481" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-1024x481.png" alt="" class="wp-image-946" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-1024x481.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-300x141.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-768x361.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-380x179.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-800x376.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9-1160x545.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/9.png 1226w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Về phía <strong>SwiftUI</strong>, mỗi thumbnail được triển khai ở BigPicCell struct.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="528" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-1024x528.png" alt="" class="wp-image-947" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-1024x528.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-300x155.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-768x396.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-1536x792.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-2048x1056.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-380x196.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-800x413.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10-1160x598.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h10.png 2110w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="b-decoration" class="wp-block-heading">b/ Decoration</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="542" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-1024x542.png" alt="" class="wp-image-949" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-1024x542.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-300x159.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-768x406.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-380x201.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-800x423.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11-1160x614.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/hj11.png 1278w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>Flutter</strong>, <strong>League</strong> class gần giống với <strong>Broadcasting</strong> class. Mỗi thumbnail được triển khai ở class bên dưới.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="723" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-1024x723.png" alt="" class="wp-image-950" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-1024x723.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-300x212.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-768x542.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-200x140.png 200w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-380x268.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12-800x565.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h12.png 1116w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>BigPicCell</strong> class sẽ đảm nhận việc hiển thị thumbnails và thông tin, được bọc bởi 1 <strong>Column</strong> widget</p>



<p>Thumbnail dùng <strong>BoxDecoration</strong> widget tạo cái viền vàng xung quanh.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="437" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-1024x437.png" alt="" class="wp-image-951" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-1024x437.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-300x128.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-768x328.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-1536x656.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-380x162.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-800x342.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1-1160x495.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h13-1.png 1836w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Tương tự thì <strong>SwiftUI</strong> cũng có <strong>League</strong> và <strong>BigPicCell</strong><em> </em>struct sẽ đảm nhận việc hiển thị thumbnails và thông tin.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="703" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-1024x703.png" alt="" class="wp-image-954" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-1024x703.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-300x206.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-768x527.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-1536x1054.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-2048x1405.png 2048w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-380x261.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-800x549.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1-1160x796.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h14-1.png 2116w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>ZStack</strong> set <code>border(Color.yellow, width: isWatchingId == id ? 2 : 0)</code> để hiển thị viền vàng xung quanh. Khi tap vào, video sẽ được play và <strong>Text(“ Live”)</strong> sẽ được hiển thị ở thumbnail. </p>



<p><code>Group {isRecord ? nil : LiveLabel()}<br>.padding(EdgeInsets.init(top: 15.0, leading: 15.0, bottom: 0.0, trailing: 0.0)).</code></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="770" src="http://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-1024x770.png" alt="" class="wp-image-952" srcset="https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-1024x770.png 1024w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-300x225.png 300w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-768x578.png 768w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-1536x1155.png 1536w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-380x286.png 380w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-800x602.png 800w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15-1160x872.png 1160w, https://blog.tomosia.com.vn/wp-content/uploads/2023/10/h15.png 1944w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="4-summary" class="wp-block-heading">4/Summary:</h2>



<p>Đã trải qua quãng thời gian làm việc khá lâu với SwiftUI, trước đó là UIKit và Interfacebuilder của iOS. Bằng so sánh chủ quan của mình, tôi đánh giá cao về sự hiện đại trong cách Flutter framework hỗ trợ chúng ta dựng UI.</p>



<p>Còn về phía bạn, hãy chia sẽ cảm nghĩ của mình ở phần bình luận nhé.</p>
<p>The post <a href="https://blog.tomosia.com.vn/swiftui-vs-flutter-cach-xay-dung-ui/">SwiftUI vs Flutter : Cách xây dựng UI</a> appeared first on <a href="https://blog.tomosia.com.vn">Tomoshare</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.tomosia.com.vn/swiftui-vs-flutter-cach-xay-dung-ui/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
