raman raman
raman raman

Reputation: 1811

why this alert dialog is not working in flutter

i used below code to get alert whenever user clicks on a particular list item


import 'package:flutter/material.dart';
import 'package:rflutter_alert/rflutter_alert.dart';





class RamList extends StatelessWidget {



  @override
  Widget build(BuildContext context) {



    return _myListView(context);
  }
}

Widget _myListView(BuildContext context) {
  final titles = [
     'Part-1',
     'part-2',
     'part-3',
     'part-4',
     'part-5',
  ];

  final numbers = [
    '1 ',
    '2 ',
    '3 ',
    '4 ',
    '5 ',



  ];

  functionOne() {
    Navigator.push(
        context, new MaterialPageRoute(builder: (context) =>  RamOne()));
  }

  functionTwo() {
    Navigator.push(context, MaterialPageRoute(builder: (context) => RamTwo()));
  }

  functionThree() {
    Navigator.push(
        context, MaterialPageRoute(builder: (context) => RamThree()));
  }

  functionFour() {
    Navigator.push(context, MaterialPageRoute(builder: (context) => RamFour()));
  }

  functionFive()=>_onAlertButtonPressed1; 





  final List<Function> onTaps = [
    functionOne,
    functionTwo,
    functionThree,
    functionFour,
    functionFive,

  ];

  return ListView.builder(

      itemCount: titles.length,
      itemBuilder: (context, index) {
        return Card(
            elevation: 50,
            child: InkWell(



              child: Row(
                children: <Widget>[


                  Container(


                    height: 100.0,
                    width:50.0,

                    decoration: BoxDecoration(
                        gradient:LinearGradientStyle.linearGradient(
                            orientation:LinearGradientStyle.ORIENTATION_HORIZONTAL,
                            gradientType: LinearGradientStyle.GRADIENT_TYPE_AMIN
                        )
                    ),),

                  Container(
                      margin: EdgeInsets.all(10),
                      child: Text(
                        numbers[index],
                      )),


                 Flexible(child:  Container(
                    margin: EdgeInsets.all(10),
                    child: GradientText((titles[index]),
                      gradient:gradient,

                      style:TextStyle(fontSize:20.0,fontWeight:FontWeight.bold, ),
                    ),

                  ))
                ],
              ),
              onTap: () => onTaps[index](),
            ));
      });


}

_onAlertButtonPressed1(context) {
  Alert(
    context: context,
    type: AlertType.info,
    title: "Coming soon",
    desc: "This link will be available in future updates",

  ).show();
}



I tried using rflutter alert to show alert.Everything is working fine without any error.But no alert appears after clicking on destined listview.. Why this code is not working. Please help me if you have any solution..

Please comment if you need more information.By the way console message is working fine.there is no error message in the console box.

Upvotes: 1

Views: 5237

Answers (2)

tomerpacific
tomerpacific

Reputation: 6455

To show an alert dialog in flutter you must do the following:

_onAlertButtonPressed1(context) {
         AlertDialog alert = AlertDialog(
               title: Text("Coming soon"),
               content: Text("This link will be available in future updates"),
               actions: [
                 //your actions (I.E. a button)
               ],
             );

            // show the dialog
               showDialog(
                    context: context,
                    builder: (BuildContext context) {
                    return alert;
                   },
               );
    }

You can view the documentation here.

And an article explaining how to use an AlertDialog here.

Upvotes: 2

Igor Kharakhordin
Igor Kharakhordin

Reputation: 9873

You have this callback: functionFive()=>_onAlertButtonPressed;

It calls __onAlertButtonPressed_, but your function that shows the dialog is called _onAlertButtonPressed1 (it has 1 in the end of it).

UPD: Your callbacks should accept context and functionFive should call _onAlertButtonPressed1 function:

  functionOne(BuildContext context) {
    Navigator.push(
        context, new MaterialPageRoute(builder: (context) => RamOne()));
  }

  functionTwo(BuildContext context) {
    Navigator.push(context, MaterialPageRoute(builder: (context) => RamTwo()));
  }

  functionThree(BuildContext context) {
    Navigator.push(
        context, MaterialPageRoute(builder: (context) => RamThree()));
  }

  functionFour(BuildContext context) {
    Navigator.push(context, MaterialPageRoute(builder: (context) => RamFour()));
  }

  functionFive(BuildContext context) => _onAlertButtonPressed1(context); 

and pass the context to callbacks:

onTap: () => onTaps[index](context),

Upvotes: 1

Related Questions