Reputation: 1811
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
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
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