การทำรูปภาพใน AlertDialog บน Flutter



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

ไฟล์ pubspec.yaml
toast: ^0.1.5
สำหรับตัวอย่างนี้ขอใส่ Toast ลงไปด้วยละกัน เพื่อจะได้ใช้งานเวลากดเลือกเงื่อนไข จะได้มีข้อความแสดงออกมาครับ

return AlertDialog(
        title: Row(
          children:[
            Image.network('https://img.icons8.com/color/452/flutter.png',
              width: 50, height: 50, fit: BoxFit.contain,),
            Text('  Alert Dialog Image. ')
            ]
          ),
        content: Text("Are You Sure Want To Proceed?"),
        actions: <Widget>[
          FlatButton(
            child: Text("ตกลง"),
            onPressed: () {
              // ใส่เงื่อนไขการกดตกลง
              Toast.show("ตกลง", context, duration: Toast.LENGTH_SHORT, gravity:  Toast.BOTTOM);
              Navigator.of(context).pop();
            },
          ),
 
           FlatButton(
            child: Text("ยกเลิก"),
            onPressed: () {
              // ใส่เงื่อนไขการกดยกเลิก
              Toast.show("ยกเลิก", context, duration: Toast.LENGTH_SHORT, gravity:  Toast.BOTTOM);
              Navigator.of(context).pop();
            },
          ),
        ],
      );
เรามาดูเงื่อนไขของ AlertDialog กันก่อนนะครับ ตามโค้ดด้านบนคือการ return AlertDialog แล้วภายในโค้ดจะมีการกำหนด Image , หัวข้อ (Text) , เนื้อหา (content) ซึ่งก็จะใส่ข้อความประกาศที่เราต้องการลงไป

จากนั้นพอเลื่อนลงมาใน action ที่นี้จะเป็นการกำหนด FlatButton หรือปุ่มนั้นเอง โดยจะใส่เป็น child: Text("ข้อความที่ต้องการ") แล้วกำหนดข้อความนั้นลงไป 

ส่วน onPressed : () ก็คือการกดนั้นเอง โดยตามตัวอย่าง เมื่อกดแล้วจะให้แสดงข้อความ Toast ออกมา และทำการปิด AlertDialog ลงไปครับ 

class MyApp extends StatelessWidget {
 
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            body: Center(
              child: AlertWithIcon()
              )
            )
          );
  }
}
ประกาศคลาส MyApp และทำการ extends StatelessWidget แล้ว child: AlertWithIcon() เพื่อไปสร้าง Method ต่อไป

class AlertWithIcon extends StatefulWidget {
  AlertWithIconWidget createState() => AlertWithIconWidget();
}
ประกาศคลาส AlertWithIcon จากนั้น createState() สร้าง Method AlertWithIconWidget เพื่อไปสร้าง UI ต่อไป

@override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AlertDialog'),
      ),
      body: Center(
        child:
            RaisedButton(
              onPressed: () => showAlert(context),
              child: Text('แสดงผล',style: TextStyle(fontSize: 20),),
              textColor: Colors.white,
              color: Colors.red[400],
              padding: EdgeInsets.fromLTRB(15, 12, 15, 12),
            ),
      ),
    );
  }
ภายใน Scaffold จะเป็นการกำหนด UI ของแอพ โดยกำหนด AppBar และสร้างปุ่มกด RaisedButton เมื่อกดจะไปที่ Method showAlert(context) ตามโค้ดบนสุด

โค้ดทั้งหมด

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import 'package:flutter/material.dart';
import 'package:toast/toast.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
 
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            body: Center(
              child: AlertWithIcon()
              )
            )
          );
  }
}
 
class AlertWithIcon extends StatefulWidget {
  AlertWithIconWidget createState() => AlertWithIconWidget();
}
 
class AlertWithIconWidget extends State {
  showAlert(BuildContext context) {
    showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Row(
          children:[
            Image.network('https://img.icons8.com/color/452/flutter.png',
              width: 50, height: 50, fit: BoxFit.contain,),
            Text('  Alert Dialog Image. ')
            ]
          ),
        content: Text("Are You Sure Want To Proceed?"),
        actions: <Widget>[
          FlatButton(
            child: Text("ตกลง"),
            onPressed: () {
              // ใส่เงื่อนไขการกดตกลง
              Toast.show("ตกลง", context, duration: Toast.LENGTH_SHORT, gravity:  Toast.BOTTOM);
              Navigator.of(context).pop();
            },
          ),
 
           FlatButton(
            child: Text("ยกเลิก"),
            onPressed: () {
              // ใส่เงื่อนไขการกดยกเลิก
              Toast.show("ยกเลิก", context, duration: Toast.LENGTH_SHORT, gravity:  Toast.BOTTOM);
              Navigator.of(context).pop();
            },
          ),
        ],
      );
     },
    );
  }
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AlertDialog'),
      ),
      body: Center(
        child:
            RaisedButton(
              onPressed: () => showAlert(context),
              child: Text('แสดงผล',style: TextStyle(fontSize: 20),),
              textColor: Colors.white,
              color: Colors.red[400],
              padding: EdgeInsets.fromLTRB(15, 12, 15, 12),
            ),
      ),
    );
  }
}

Credit By : https://flutter-examples.com/show-image-icon-inside-alert-dialog/

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การรับค่า ส่งค่าจากหน้าที่ 1 ไปหน้าที่ 2 บน Flutter (How to pass data between screens in Flutter?)

การจับเวลาบน Flutter ทำยังไง (How to count up timer flutter?)

วิธีการสลับข้อมูล MySQL ในคอลัมน์เดียวกัน