Created
July 24, 2019 12:17
-
-
Save doppelledev/bea7114df71d77f696ce055bfe8b888e to your computer and use it in GitHub Desktop.
For a SO question
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class _MyHomePageState extends State<MyHomePage> | |
with SingleTickerProviderStateMixin { | |
int theirGroupValue = 0; | |
List data = List(); | |
var data1 = []; | |
var data2 = []; | |
var data3 = []; | |
String url = 'https://e19f7c9d.ngrok.io/api/events/westernaf/packages'; | |
Future<String> makeRequest() async { | |
var response = await http | |
.get(Uri.encodeFull(url), headers: {"Accept": "application/json"}); | |
setState(() { | |
var extractdata = json.jsonDecode(response.body); | |
data = extractdata["result"]; | |
}); | |
for (var i = 0; i < data.length; i++) { | |
var startTime = data[i]['start_date'].split('T')[0]; | |
var endTime = data[i]['end_date'].split('T')[0]; | |
final todayDate = DateTime.now(); | |
final pkgStartDate = DateTime.parse(startTime); | |
final pkgEndDate = DateTime.parse(endTime); | |
final difDate = todayDate.isAfter(pkgStartDate); | |
final difDate2 = todayDate.isBefore(pkgEndDate); | |
if (difDate && difDate2 == true) { | |
if (data[i]['regTypeId'] == 1) { | |
this.theirGroupValue = 0; | |
} else if (data[i]['regTypeId'] == 2) { | |
this.theirGroupValue = 1; | |
} else if (data[i]['regTypeId'] == 3) { | |
this.theirGroupValue = 2; | |
} else { | |
this.theirGroupValue = 0; | |
} | |
} | |
} | |
data1 = data.where((d) => d['regTypeId'] == 1).toList(); | |
data2 = data.where((d) => d['regTypeId'] == 2).toList(); | |
data3 = data.where((d) => d['regTypeId'] == 3).toList(); | |
} | |
final Map<int, Widget> logoWidgets = const <int, Widget>{ | |
0: Text('Early Bird'), | |
1: Text('General'), | |
2: Text('Onsite'), | |
}; | |
List<bool> inputs = new List<bool>(); | |
@override | |
void initState() { | |
super.initState(); | |
this.makeRequest(); | |
setState(() { | |
for (int i = 0; i < 35; i++) { | |
inputs.add(false); | |
} | |
}); | |
} | |
void ItemChange(bool val, int index) { | |
setState(() { | |
inputs[index] = val; | |
}); | |
} | |
static Widget giveCenter(String ListView) { | |
return new Card( | |
// child Container( | |
child: Text( | |
"Text: $ListView", | |
style: TextStyle(color: Colors.blue, fontSize: 20.0), | |
// ) | |
), | |
); | |
} | |
void _Register() { | |
print('supposed to push a route'); | |
} | |
@override | |
Widget _listingShow(i) { | |
var startTime = data1[i]['start_date'].split('T')[0]; | |
var endTime = data1[i]['end_date'].split('T')[0]; | |
final todayDate = DateTime.now(); | |
final pkgStartDate = DateTime.parse(startTime); | |
final pkgEndDate = DateTime.parse(endTime); | |
final difDate = todayDate.isAfter(pkgStartDate); | |
final difDate2 = todayDate.isBefore(pkgEndDate); | |
if (difDate && difDate2 == true) { | |
return new Row( | |
children: <Widget>[ | |
Expanded( | |
child: Text(data1[i]["packageName"]), | |
), | |
Expanded( | |
child: Text((data1[i]["price"]).toString()), | |
), | |
Expanded( | |
child: Checkbox( | |
value: inputs[i], | |
onChanged: (bool val) { | |
ItemChange(val, i); | |
}, | |
), | |
), | |
], | |
); | |
} | |
} | |
@override | |
Widget _listingShow2(i) { | |
var startTime = data2[i]['start_date'].split('T')[0]; | |
var endTime = data2[i]['end_date'].split('T')[0]; | |
final todayDate = DateTime.now(); | |
final pkgStartDate = DateTime.parse(startTime); | |
final pkgEndDate = DateTime.parse(endTime); | |
final difDate = todayDate.isAfter(pkgStartDate); | |
final difDate2 = todayDate.isBefore(pkgEndDate); | |
if (difDate && difDate2 == true) { | |
return new Row( | |
children: <Widget>[ | |
Expanded( | |
child: Text(data2[i]["packageName"]), | |
), | |
Expanded( | |
child: Text((data2[i]["price"]).toString()), | |
), | |
Expanded( | |
child: Checkbox( | |
value: inputs[i], | |
onChanged: (bool val) { | |
ItemChange(val, i); | |
}, | |
), | |
), | |
], | |
); | |
} | |
} | |
@override | |
Widget _listingShow3(i) { | |
var startTime = data3[i]['start_date'].split('T')[0]; | |
var endTime = data3[i]['end_date'].split('T')[0]; | |
final todayDate = DateTime.now(); | |
final pkgStartDate = DateTime.parse(startTime); | |
final pkgEndDate = DateTime.parse(endTime); | |
final difDate = todayDate.isAfter(pkgStartDate); | |
final difDate2 = todayDate.isBefore(pkgEndDate); | |
print('$i: ${data3[i]["packageName"]}'); | |
if (difDate && difDate2 == true) { | |
return new Row( | |
children: <Widget>[ | |
Expanded( | |
child: Text(data3[i]["packageName"]), | |
), | |
Expanded( | |
child: Text((data3[i]["price"]).toString()), | |
), | |
Expanded( | |
child: Checkbox( | |
value: inputs[i], | |
onChanged: (bool val) { | |
ItemChange(val, i); | |
}, | |
), | |
), | |
], | |
); | |
} | |
} | |
Widget build(BuildContext context) { | |
List<Widget> bodies = [ | |
new ListView.builder( | |
itemCount: data1.length, | |
itemBuilder: (BuildContext context, i) { | |
return ListTile( | |
title: _listingShow(i), | |
); | |
}, | |
), | |
new ListView.builder( | |
itemCount: data2.length, | |
itemBuilder: (BuildContext context, i) { | |
return ListTile( | |
title: _listingShow2(i), | |
); | |
}, | |
), | |
new ListView.builder( | |
itemCount: data3.length, | |
itemBuilder: (BuildContext context, i) { | |
return ListTile( | |
title: _listingShow3(i), | |
); | |
}, | |
), | |
]; | |
return Scaffold( | |
appBar: AppBar( | |
elevation: 2.0, | |
backgroundColor: Colors.white, | |
centerTitle: true, | |
title: Text( | |
'Select conference Package', | |
style: TextStyle(color: Colors.black), | |
), | |
bottom: PreferredSize( | |
preferredSize: Size(double.infinity, 45.0), | |
child: Padding( | |
padding: EdgeInsets.only(top: 5.0, bottom: 10.0), | |
child: Row( | |
children: <Widget>[ | |
SizedBox( | |
width: 15.0, | |
), | |
Expanded( | |
child: CupertinoSegmentedControl( | |
groupValue: this.theirGroupValue, | |
onValueChanged: (changeFromGroupValue) { | |
setState(() { | |
theirGroupValue = this.theirGroupValue; | |
}); | |
}, | |
children: logoWidgets, | |
), | |
), | |
], | |
), | |
), | |
), | |
), | |
body: bodies[this.theirGroupValue], | |
); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment