Day 09-สร้าง Animationให้ Bar Graph
สอนตัวเองเขียน app ด้วย Flutter ใน25วัน (Flutter Self-Learning Challenge in 25 Days)
วันที่9 จะเป็นการทดลองเขียนการสุ่มค่าตัวเลขขึ้นมา เพื่อนำมาเขียนเป็น Bar Graph และลองทำ animation ให้กราฟขยับเวลาเปลี่ยนค่า ซึ่งก็อ้างอิงวิธีการจาก
แต่ว่าจะไม่ได้ทำตามทั้งหมด เพราะอ่านแล้วยังรู้สึกงง เนื่องจากตอนหลังๆ อธิบายแล้วภาพและโค๊ดประกอบมันแปลกๆ แต่เดี๋ยวไว้มีโอกาสจะต้องมาลองแกะโค๊ดเพื่อศึกษาอย่างละเอียดอีกที เพราะบางอย่างอาจจะเป็นเพราะยังมือใหม่เลยยังไม่ค่อยเข้าใจเท่าที่ควร ก็เอาเป็นว่าเอาเท่าที่พอเข้าใจและทำตามได้ก่อนแล้วกัน
ตัวโครงสร้างโค๊ดหลักๆก็จะเป็นการ import ตัว package เพิ่มเติมเข้ามาคือ ‘dart:math’ และ ‘animation.dart’ ในโปรแกรม main ก็จะเป็นการ return ตัว MaterialApp widget โดย home: Property จะเรียกใช้ stateful widget class ชื่อ ChartPage() ดังนั้นเราก็จะต้องสร้าง stateful widget และ state class เพื่อให้รองรับสถานะของตัวกราฟและตัวเลขที่เปลี่ยนแปลงเมื่อผู้ใช้กดปุ่มรีเฟรช และใน state class นี้จะไปเรียก widget class ที่ชื่อ BarChartPainter เพื่อทำการวาดกราฟอีกที
ใน State class จะเป็นการสร้างตัวแปรชื่อ random เพื่อสุ่มค่าตัวเลขขึ้นมา ตัวแปร dataSet เพื่อเก็บค่าเริ่มต้น ตัวแปร animation เพื่อใช้ในการควบคุมการแสดง Animation และตัวแปร tween เพื่อทำการ interpolate ค่าในการเล่น Animation
และจะมี method ที่ชื่อ initState() สำหรับกำหนดสถานะเริ่มต้น โดยกำหนดค่าระยะเวลาในการเล่น Animation ประมาณ 300 มิลลิวินาที กำหนดค่า tween และค่า animation ให้เล่นแบบไปข้างหน้า
dispose() สำหรับคืนค่าทรัพยากรที่ใช้ในการเล่น Animation
และ changeData() สำหรับการ set ค่า state และสุ่มค่าตัวเลขให้อยู่ในช่วง 0 ถึง 100
จากนั้นในส่วน build method จะ return Scaffold widget โดยมีการเรียกใช้ widget class ที่ชื่อ CustomPaint() สำหรับในการสร้างภาพกราฟ โดยจะทำการเรียก widget class ที่ชื่อ BarChartPainterในการกำหนดขนาดรูปร่างและสีของกราฟ และมี Text widget สำหรับแสดงค่าตัวเลขที่สุ่มขึ้นมาด้วย
นอกจากนี้ก็จะมีการสร้างปุ่มสำหรับให้ผู้ใช้กดเพื่อรีเฟรชโดยการไปเรียก method changeData เพื่อเปลี่ยนค่าตัวเลขใหม่
ใน widget class ที่ชื่อ BarChartPainter ก็จะมีการกำหนดตัวแปร barWidth เพื่อกำหนดความกว้างของแท่งกราฟ และจะสร้าง method ชื่อ paint() สำหรับสร้างตัวกราฟด้วย Rect class ที่จะทำการสร้างรูปสี่เหลี่ยมจากการกำหนดขอบด้านซ้าย ขอบด้านบน และค่าความกว้างความสูง
เมื่อทำการรันโปรแกรม ก็จะทำการเริ่มด้วยการสร้างกราฟที่ค่าตัวเลข 50 จากนั้นเมื่อกดปุ่มรีเฟรช ก็จะทำการสุ่มค่าและสร้างรูปกราฟตามความสูงของค่าที่สุ่มได้
เราสามารถลองเล่นกับการเปลี่ยนขนาดความกว้างของกราฟ สีของกราฟได้จากค่าตัวแปร Colors.blue[400] ให้เป็นค่าอื่น และตัวแปร barWidth =10 ให้เป็นค่าอื่น
สุดท้ายนี้ต้องบอกว่าไม่ได้เข้าใจในส่วนของโค๊ดทั้งหมดแต่ก็พอจะทำให้สามารถเรียนรู้เพื่อดัดแปลงบางอย่างและนำไปใช้ได้บ้าง
Support me at:
Ko-fi :https://ko-fi.com/bitesizestory
Buy me a coffee :https://www.buymeacoffee.com/bitesizestory
ติดตามบทความ สอนตัวเองเขียน 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
Day04-สร้าง Interaction ให้กับไอคอนและเก็บค่าสถานะ