Day01-เป้าหมายและแหล่งข้อมูลในการเรียนรู้Flutter ด้วยตนเอง

BiteSizeStory
3 min readJan 2, 2021

--

สอนตัวเองเขียน app ด้วย Flutter ใน25วัน (Flutter Self-Learning Challenge in 25 Days)

ref=’https://www.freepik.com/vectors/menu' Menu vector created by freepik — www.freepik.com

Day01

ที่มาและเป้าหมาย

อยากเรียนเขียน app ด้วยFlutter ไปทำไม ก็ต้องตอบว่าเพื่อเอามาสร้างไอเดียที่มีให้เป็นจริงหรือใกล้เคียงความจริงมากที่สุด หรือในภาษาของการทำ Start up เค้าเรียกว่าการทำ MVP หรือ Minimal Viable Product และเนื่องจากไอเดียที่มีส่วนใหญ่เป็นเรื่องของธุรกิจบนดิจิทัลเป็นส่วนใหญ่ ก็เป็นการหลีกเลี่ยงไม่ได้ที่จะต้องมารู้จักกับการพัฒนาPrototype ด้วยตัวเอง ข้อมูลการเรียนรู้เกี่ยวกับการพัฒนา app ด้วย Flutter ส่วนมากก็จะเป็นการสอนเรื่องหลักการเขียนโค๊ดแบบทำให้ดูเสียเป็นส่วนใหญ่ น้อยมากที่จะสอนให้เข้าใจภาพใหญ่หรือหลักการวิธีคิด

เริ่มต้นปีใหม่ 2021 นี้ก็เลยตั้งเป็น New Year Resolution ที่จะ Challenge ตัวเองขึ้นมาที่จะเรียนเขียน app ด้วยตัวเองใน 25 วัน

ดังนั้นหลังจากที่ได้หาข้อมูลเกี่ยวกับการเรียน Flutter ด้วยตัวเองมามากพอสมควร ทำให้พบว่า มาชอบเรื่องของการสร้าง UI โดยการเขียนโค๊ดขึ้นมามากกว่า เพราะมันสามารถต่อยอดได้จากการออกแบบ UI จากโปรแกรม Adobe XD ดังนั้นเมื่อทำใน Flutter จะทำให้สามารถรันตัว UI ได้จริงจากบนโทรศัพท์เลย ดังนั้นคีย์เวิร์ดหรือเป้าหมายในการเรียน Flutter จึงมุ่งเน้นไปที่การเป็น Flutter UI app design development เพราะมันจะตอบโจทย์ในเรื่องของการคิดหรือมีไอเดียใหม่อยู่เสมอๆ และถ้าสามารถแปลงจากไอเดียเหล่านั้นขึ้นมาเป็น MVP หรือ Prototype ต้นแบบได้

แหล่งข้อมูลที่น่าสนใจ

ว่าไปแล้ว document ที่ทาง Google ทำไว้ให้สำหรับการเรียน Flutter นั้นก็น่าสนใจไม่น้อย รวมถึงการมี Codelabs ที่สอนแบบเป็นขั้นตอนให้ทดลองเขียนตาม ซึ่งอันนี้ดีมาก การเรียนอะไรก็แล้วแต่ควรจะทำอย่าง Codelabs

https://flutter.dev/docs/development/ui/widgets-intro

https://flutter.dev/docs/codelabs

https://codelabs.developers.google.com/codelabs/flutter?hl=en&continue=https%3A%2F%2Fcodelabs.developers.google.com%2F#0

แหล่งข้อมูลอีกอันคือตัวอย่างของ Solution ต่างๆในเรื่องของการทำ UI และการแก้ปัญหา ที่พร้อมให้เราเอามาดัดแปลงหรือเอามาใช้ในการเขียน app ของเรา

https://flutterawesome.com/

สิ่งที่ชื่นชอบอีกอย่างนึงคือการทำ Onboarding design concept ที่ทำให้เราได้เห็นไอเดียของ app ที่เราจะพัฒนาได้อย่างรวดเร็ว ดีกว่า Adobe XD ตรงที่มันสามารถสัมผัสและโต้ตอบได้จริงๆ และมีความรู้สึกว่าพอลองเขียนโปรแกรมด้วย Flutter ไปซักพัก การเขียน Onboarding app นี่ถือว่าเป็นพื้นฐานที่สุดในการเข้าใจถึงการเริ่มต้นออกแบบ app เลย

https://uxdesign.cc/flutter-design-challenge-onboarding-concept-1f5774d55646

และแหล่งข้อมูลสุดท้ายที่สำคัญคือวีดีโอจาก youtube ทั้งหลายที่มีอยู่มากมายหากเพียงแต่เราต้องมีคีย์เวิร์ดที่เราสนใจใส่เข้าไปเพื่อหาวิธีหรือตัวอย่างของการเขียนโปรแกรมด้วย Flutter

ตอนที่ได้ที่มาและเป้าหมายของการเรียน Flutter ก็ได้ไปเจอบทความใน Medium เขียนเกี่ยวกับ Flutter Design Patterns Series เลยตั้งใจว่าจะศึกษาและเรียนรู้จากบทความชุดนี้ทั้งหมด แต่คิดว่าน่าจะยากอยู่พอสมควร อาจจะขอเก็บไว้เรียนตอนท้ายๆถ้ามีเวลาเหลือ

https://mkobuolys.medium.com/

ดังนั้นวันแรกของการเรียน Flutter นี้จึงเป็นการรวบรวมข้อมูลและแหล่งความรู้ต่างๆเพื่อการเริ่มต้น โชคดีตรงที่ได้รู้เป้าหมายที่ชัดเจนของการเรียนว่าเพื่อเอาไปทำอะไรก็ทำให้ขอบเขตของการเรียนรู้ลดลงและมีความเป็นไปได้มากที่สุด

เริ่มจากตรงไหนก่อนดี

พอมาลองพิจารณาแหล่งข้อมูลเริ่มต้นที่หามาทั้งหมดแล้วคิดว่าก็คงจะเริ่มทำความเข้าใจเกี่ยวกับเรื่อง Widgets ก่อน แล้วมาทำ Codelabs เรื่อง Basic Layout Design

จากนั้นก็จะมาดูในส่วน Good for beginners ที่มีทั้งหมด4หัวข้อ

Good for beginners

If you’re new to Flutter, we recommend starting with one of these codelabs:

  • Write your first Flutter app, part 1
  • Create a simple mobile app that generates proposed names for a startup company. In part one, you’ll use a package that returns pairs of words at random and inserts them into an infinite scrolling list. You can also find this codelab on flutter.dev.
  • Write your first Flutter app, part 2
  • Create a simple mobile app that generates proposed names for a startup company. In part two, you’ll extend the example from part 1 to allow the user to select favorite word pairs, and add a second “Saved Favorites” page where users can view the selected names. Finally, you’ll change the app’s theme color.
  • Write your first Flutter app on the web
  • Implement a simple web app in DartPad (no downloads required!) that displays a sign-in screen containing three text fields. As the user fills out the fields, a progress bar animates along the top of the sign-in area. This codelab is written specifically for the web, but if you have downloaded and configured Android and iOS tooling, the completed app works on Android and iOS devices, as well.
  • Building beautiful UIs with Flutter
  • A deeper “first dive” than “Write your first Flutter app.” Create a chat app that includes a simple animation, and customizes the UI for iOS and Android. As part of this codelab, learn how to use keyboard shortcuts in Android Studio.

จากนั้นค่อยมาเริ่มวีดีโอใน youtube ที่สอน Flutter ใน 25 วัน แต่อาจจะต้องรวบบางหัวข้อเพื่อให้อยู่ในกำหนดเวลา

แต่ไหนๆแล้ววันแรกก็ขอลองเขียนเล่นๆดูหน่อยว่าโค๊ดที่น้อยที่สุดในการสร้างคำว่า Hello World บนหน้าจอต้องเขียนอะไรบ้าง ตามภาพ

ติดตามบทความ สอนตัวเองเขียน app ด้วย Flutter ใน25วัน (Flutter Self-Learning Challenge in 25 Days) ทั้งหมดได้จากลิงค์ด้านล่าง

Day25-สร้าง app สำหรับอัพเดทยอดผู้ติดเชื้อโควิด19 ทั่วโลก

Day24-สร้าง app สำหรับอ่านข่าวด้วย NewsAPI ตอนที่3

Day23-สร้าง app สำหรับอ่านข่าวด้วย NewsAPI ตอนที่2

Day22-สร้าง app สำหรับอ่านข่าวด้วย NewsAPI ตอนที่1

Day21-ใช้ WebView ในการแสดงผลไฟล์ html5 ด้วย webview_flutter_plus package

Day20-ใช้ GridView และการเปลี่ยน interface แนวตั้งและแนวนอน

Day19-ทำ Flip Card ด้วย flip_card package

Day18-สร้าง ListView จากไฟล์ json

Day17-ทำ Splash Screen ง่ายๆด้วย splashscreen package

Day16-สร้าง Bottom Navigation Bar

Day15-สร้าง Animated Container

Day14-สร้าง Page Navigation Animation ง่ายๆ

Day13-สร้างหน้าจอ slideshow ด้วย carousel_slider package

Day12-สร้างBar Graph ด้วย charts_flutter package

Day11-การทำ Animated Bar Graph จากค่าสุ่มอย่างง่ายๆ

Day10-การทำ Bar Graph จากค่าสุ่มอย่างง่ายๆ

Day09-สร้าง Animationให้ Bar Graph

Day08-ทำ OnBoarding Screen ด้วย Package introduction_screen

Day07-สร้างInteractionง่ายๆบน Page Layout

Day06-สร้าง Page Layout

Day05-สร้าง Chat Screen UI

Day04-สร้าง Interaction ให้กับไอคอนและเก็บค่าสถานะ

Day03-stateless/stateful กับโครงสร้างในการเขียนapp

Day02-Basic Flutter Widget

Day01-เป้าหมายและแหล่งข้อมูลในการเรียนรู้Flutter ด้วยตนเอง

--

--