Flutter Layout Cheat Sheet
flutter เท่าที่รู้ คือชุดบทความที่ผมเรียบเรียงจากการใช้งาน
บทความชุดนี้ เป็นบทความที่ผู้เขียนเรียบเรียงจากการหัดเขียน flutter ของผู้เขียน ตั้งแต่เริ่มต้นการใช้งาน widgets พื้นฐาน ไปจนถึง state managements
Note
NOTE: for the full course, check out is a fundamental concept in mobile development. Various widgets in F. Wedget พื้นฐานที่ใช้บ่อยใน flutter. ผมแบ่ง wedgets ไว้ 3 หมวดโดยแบ่งจามลักษณะของการใช้งาน ได้แก่. ประเภทจัดการ layout. Row; Column; Stack; ประเภทที่ห่อหุ้ม. During the layout phase, Flutter engine uses a constraint solver to automatically correct 'out-of-bound' values into what's allowed by its parent constraints. For example, if you have a Container that's 50x50, and for its child, you pass in another Container that's 300x300, the inner container will be automatically corrected to 'not exceed its. Flutter — Row/Column Cheat Sheet. Minimize the amount of free space along the main axis, subject to the incoming layout constraints. Center(child: Container.
ชุดบทความนี้ แบ่งออกเป็น 5 บทความ
- Basic Widgets : แนะนำให้รู้จักกับ wedgets พืนฐานที่ใช้กันบ่อยๆ
- Build Simple UI : โดยนำพวก wedgets จากบทความแรกมายำรวมกันเป็นหน้า login
- Provider Architecture : เริ่มเข้าสู่ การวางโครงสร้างของ application การจัดการข้อมูลภายใน application
- Provider + Firebase(auth + firstore) : นำ provider มาประยุกต์ฝช้งานร่วมกับ firebase
- Provider + http : สร้าง app ที่เชื่อมต่อกับ REST API
มาเริ่มกันเลย
ผมแบ่ง wedgets ไว้ 3 หมวดโดยแบ่งจามลักษณะของการใช้งาน ได้แก่
- ประเภทจัดการ layout
- Row
- Column
- Stack
- ประเภทที่ห่อหุ้ม layout
- Container
- Wrap
- Expanded
- Center
- GestureDetector
- ประเภทใช้งานทั่วไป
- Text
- RichText
- Image
- TextField
- Button
ซึ่งใน wedgets แต่ละตัวนั้นมี คุณสมบัติที่หลากหลายมากซึ่งบางตัว สามารถนำไปเขียนเป็นอีกหนึ่งบทความได้เลย แต่ในบทความนี้ ผู้เขียนจะอธิบายเฉพาะที่ผู้เขียนได้ใช้งานบ่อย และจะแปะข้อมูลเพื่อให้ ผู้อ่านสามารถไปศึกษาเพิ่มเติมได้ มาเริ่มตัวแรกกันเลย
1 Row & Column
row : เป็นการจัดเรียงวัตถุแบบแนวนอน
column : เป็นการจัดเรียงวัตถุแบบแนวตั้ง
mainAxisAlignment
เป็นคำสั่งที่เอาไว้จัดการ layout ในแนวแกนหลัก
start
center
end
spaceBetween
spaceEvenly
spaceAround
crossAxisAlignment
เป็นคำสั่งที่เอาไว้จัดการ layout ในแนวแกนรอง
start
center
end
baseline
stretch
Stsck
2 ประเภทที่ห่อหุ้ม layout
Container
Wrap
Expanded
Center
เป็น widget ที่เอาไว้ครอบ วัตถุ เพื่อให้วัตุนั้นอยู่กึ่งกลางของ widgets นั้น
GestureDetector
เป็น widget ที่เมื่อเอาไปครอบ widget ตัวไหนสามารถทำให้ wedget นั้นกดได้ เหมือน button โดยจะใช้คำสั่ง onTap() ในการเรียก callback function
Orientation
เป็นท่าที่เอาไว้เช็คว่า ตอนนี้อยู่ในหน้าจอแนวตั้งหรือแนวนอน เราสามารถตั้งเงื่อนไขได้ว่า จะให้แสดง wedgets แบบไหน
3 ประเภทใช้งานทั่วไป
Text
Text wedget ตามตัวเลยเอาไว้แสดง Text เราสามารถ print variable ใน text ได้โดยใช้ $variable
และยังสามารถกำหนด style (สี, ขนาด, รูปแบบตัวอักษรได้)
RichText
Image
Image assets
คือ การใช้ images ที่อยู่ใน assets วิธีการเพิ่มคือ
สร้าง folder assets » images ใว้ในระดับ root project
เข้าไปเพิ่ม assets ใน pubspec.yaml
Image network
TextField
Flutter Flex Layout
เนื่องจากเรื่อง from มีรายละเอียดข้อนข้างมากจึงขอเก็บเอาไว้เขียนในบทความต่อไป แต่หากใครสงสัยอยากลองหาอ่านเพิ่มเติมแนะนำ บทความนี้
Button
RaisedButton
Material Buttons
ในส่วนของ button นั้นสามารถศึกษาเพิ่มเติมได้จาก ที่นี่
สรุป
ในบทความนี้พาไปดู wedgets พื้นฐายที่มักใช้งานบ่อยๆRef.
- layout sheets https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e
- box decoration https://medium.com/jlouage/flutter-boxdecoration-cheat-sheet-72cedaa1ba20
- basic layout https://flutter.dev/docs/development/ui/widgets/basics
- textformfield https://medium.com/flutter-community/a-deep-dive-into-flutter-textfields-f0e676aaab7a
- widgets https://medium.com/jlouage/flutter-row-column-cheat-sheet-78c38d242041
A table allows the user to arrange the data in rows and columns. It is used to store and display our data in a structured format, which helps us to compare the pairs of related values easily.
Flutter also allows the user to create a table layout in the mobile application. We can create a table in Flutter using the Table widget that uses the table layout algorithm for its children. This widget has several properties to enhance or modify the table layout. These properties are: border, children, columnWidths, textDirection, textBaseline, etc.
When we use the Table widget?
A table widget can be used when we want to store multiple rows with the same column width, and each column(table) contains equal data. Flutter provides another approach for the same using the GridView widget.
To create a table, we must use the following things:
- First, we need to add a Table widget in the body.
- Next, we have to add TableRow(s) in children of the table widget. Since the table widget has multiple rows, so we use children, not child.
- Finally, we need to add TableCell(s) in children of TableRow widget. Now, we can write any widget in this place like we are going to use a Text widget.
While using this widget, we must know these rules:
- This widget automatically decided the column width, which is equally divided between TableCells. If it is not equal, we will get an error that says every TableRow in a table must have the same number of children so that every cell is filled. Otherwise, the table will contain holes.
- Each row has the same height, which will be equal to the highest height of a TableCell.
- The children of a table can have only TableRow widgets.
Let us understand it with the help of an example given below where we try to cover each thing related with this widget:
Flutter Layout Cheat Sheet
Output:
When we run the application in emulator or device, we will see the screenshot below:
Flutter DataTable
Flutter also allows us another widget to create a table in our application named DataTable widget. It is a material design data table where we can display data with column labels and rows. This widget automatically adjusted the table's column according to the cell data. It is expensive to display data using this widget because here, all the data must be measured twice. First, it measured the dimensions for each column, and second, it actually lay out the table. So, we have to ensure that this widget can only be used when we have fewer rows.
DataTable widget stored information using columns and rows property. The columns property contains data using an array of DataColumn, and the rows property contains information using an array of DataRow. The DataRow has sub-property cells that take an array of DataCell. The DataColumn has a sub-property label that takes widgets as value. We can also provide Text, Image, Icon, or any other widget in the DataTable.
The following is the syntax of DataTable:
Flutter Flexbox
Example
Let us understand how to use DataTable in the Flutter app. Here, we will define a simple data table that has three column labels and four rows:
Flutter Card Shape
Output:
When we run the application in emulator or device, we will see the screenshot below: