Mr_HO1A

Attendance Set View

Sep 15th, 2019
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 17.58 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2.  
  3. // Import Screen Utils Package
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5.  
  6. // Import Custom Colors
  7. import 'package:teacher_app/configs/ColorConfig.dart';
  8.  
  9. // Import Data Get Contoller
  10. import 'package:teacher_app/controllers/AttendanceSetController.dart';
  11.  
  12. // Import Font Awesome Icons
  13. import 'package:font_awesome_flutter/font_awesome_flutter.dart';
  14.  
  15.  
  16. class AttendanceSetView extends StatefulWidget {
  17.   @override
  18.   _AttendanceSetViewState createState() => _AttendanceSetViewState();
  19. }
  20.  
  21. class _AttendanceSetViewState extends State < AttendanceSetView > {
  22.  
  23.   // Boolean Value to Show drop down accordingly
  24.   bool isBranchSelecterVisible = false;
  25.   bool isSemisterSelecterVisible = false;
  26.   bool isSubjectSelecterVisible = false;
  27.   bool isPeriodSelecterVisible = false;
  28.  
  29.   // Default Value For Selected Sesion
  30.   String selectedSession = "-1";
  31.   String selectedBranch = "-1";
  32.   String selectedSemister = "-1";
  33.   String selectedSubject = "-1";
  34.   String selectedPeriod = "-1";
  35.  
  36.  
  37.   // Map For Period Selecter
  38.   List<Map> periods = [
  39.     {
  40.       "Id": 0,
  41.       "Start": "9:40",
  42.       "End": "10:40"
  43.     },
  44.     {
  45.       "Id": 1,
  46.       "Start": "10:40",
  47.       "End": "11:40"
  48.     },
  49.     {
  50.       "Id": 2,
  51.       "Start": "11:40",
  52.       "End": "12:30"
  53.     },
  54.     {
  55.       "Id": 3,
  56.       "Start": "12:30",
  57.       "End": "1:50"
  58.     },
  59.     {
  60.       "Id": 4,
  61.       "Start": "1:50",
  62.       "End": "2:50"
  63.     },
  64.     {
  65.       "Id": 5,
  66.       "Start": "2:50",
  67.       "End": "3:50"
  68.     }
  69.   ];
  70.  
  71.   // Drop Down Button Decoratons
  72.   InputDecoration dropDownButtonDecoration = new InputDecoration(
  73.  
  74.     border: OutlineInputBorder(
  75.       borderSide: BorderSide(
  76.         width: 1.0,
  77.         color: ColorConfig.textSecondry
  78.       )
  79.     ),
  80.  
  81.  
  82.   );
  83.  
  84.   // Get Session List
  85.   getSessionsList() async {
  86.  
  87.     dynamic data = await AttendanceSetContoller.getSession();
  88.  
  89.     List < DropdownMenuItem < String >> items = [];
  90.     // Default Value
  91.     items.add(
  92.       DropdownMenuItem(
  93.         child: new Text(
  94.           "Please Select Session"
  95.         ),
  96.         value: "-1",
  97.       )
  98.     );
  99.     data.forEach((da) => {
  100.       items.add(
  101.         DropdownMenuItem(
  102.           child: new Text(
  103.             da["Session_Name"]
  104.           ),
  105.           value: da["Session_ID"].toString(),
  106.         )
  107.       )
  108.     });
  109.     return items;
  110.   }
  111.  
  112.   // Get Branch List
  113.   getBranchList() async {
  114.  
  115.     dynamic data = await AttendanceSetContoller.getBranch();
  116.  
  117.     List < DropdownMenuItem < String >> items = [];
  118.     // Default Value
  119.     items.add(
  120.       DropdownMenuItem(
  121.         child: new Text(
  122.           "Please Select Branch"
  123.         ),
  124.         value: "-1",
  125.       )
  126.     );
  127.     data.forEach((da) => {
  128.       items.add(
  129.         DropdownMenuItem(
  130.           child: new Text(
  131.             da["BR_Branch_Name"]
  132.           ),
  133.           value: da["BR_Branch_Id"].toString(),
  134.         )
  135.       )
  136.     });
  137.     return items;
  138.   }
  139.  
  140.   // Get Semister List
  141.   getSemisterList() async {
  142.  
  143.     dynamic data = await AttendanceSetContoller.getSemister(selectedBranch);
  144.     //print(data);
  145.  
  146.     List < DropdownMenuItem < String >> items = [];
  147.     // Default Value
  148.     items.add(
  149.       DropdownMenuItem(
  150.         child: new Text(
  151.           "Please Select Semester"
  152.         ),
  153.         value: "-1",
  154.       )
  155.     );
  156.     data.forEach((da) => {
  157.       items.add(
  158.         DropdownMenuItem(
  159.           child: new Text(
  160.             da["SM_Sem_Name"]
  161.           ),
  162.           value: da["SM_Sem_Id"].toString(),
  163.         )
  164.       )
  165.     });
  166.     return items;
  167.   }
  168.  
  169.   // Get Subject List
  170.   getSubjectList() async {
  171.  
  172.     dynamic data = await AttendanceSetContoller.getSubject(selectedSemister);
  173.     //print(data);
  174.  
  175.     List < DropdownMenuItem < String >> items = [];
  176.     // Default Value
  177.     items.add(
  178.       DropdownMenuItem(
  179.         child: new Text(
  180.           "Please Select Subject"
  181.         ),
  182.         value: "-1",
  183.       )
  184.     );
  185.     data.forEach((da) => {
  186.       items.add(
  187.         DropdownMenuItem(
  188.           child: new Text(
  189.             da["SY_Syllabus_Name"]
  190.           ),
  191.           value: da["SY_Syllabus_Id"].toString(),
  192.         )
  193.       )
  194.     });
  195.     return items;
  196.   }
  197.  
  198.   // Period Selecter
  199.    // Get Subject List
  200.   getPeriodList() {
  201.  
  202.     List < DropdownMenuItem < String >> items = [];
  203.     // Default Value
  204.     items.add(
  205.       DropdownMenuItem(
  206.         child: new Text(
  207.           "Please Select Period"
  208.         ),
  209.         value: "-1",
  210.       )
  211.     );
  212.     periods.forEach((da) => {
  213.       items.add(
  214.         DropdownMenuItem(
  215.           child: new Text(
  216.             (da["Id"]+1).toString()
  217.           ),
  218.           value: da["Id"].toString(),
  219.         )
  220.       )
  221.     });
  222.     print(items);
  223.     return items;
  224.   }
  225.  
  226.  
  227.   @override
  228.   Widget build(BuildContext context) {
  229.     // Adding Screen Util to adjust things according to screen
  230.     // Default Screen Parameters width : 1080px , height:1920px
  231.     ScreenUtil.instance = ScreenUtil.getInstance()..init(context);
  232.  
  233.     // Adding Font Scaling property to devices
  234.     ScreenUtil(allowFontScaling: true).setSp(28.0);
  235.  
  236.     return new Scaffold(
  237.       backgroundColor: ColorConfig.backgroundColor,
  238.       body: new SafeArea(
  239.         child: new Container(
  240.           width: double.infinity,
  241.           height: double.infinity,
  242.           child: new Column(
  243.             crossAxisAlignment: CrossAxisAlignment.center,
  244.             children: < Widget > [
  245.               new Card(
  246.                 child: new Container(
  247.                   width: ScreenUtil().setWidth(1000.0),
  248.                   height: ScreenUtil().setHeight(1800.0),
  249.                   child: new Padding(
  250.                     padding: EdgeInsets.all(8.0),
  251.                     child: new Column(
  252.                       crossAxisAlignment: CrossAxisAlignment.center,
  253.                       children: < Widget > [
  254.                         // Paddding Before Text
  255.                         new Padding(
  256.                           padding: EdgeInsets.only(top: 15.0),
  257.                         ),
  258.  
  259.                         new Text(
  260.                           "Select Values For Attendance",
  261.                           style: TextStyle(
  262.                             color: ColorConfig.textPrimary,
  263.                             fontSize: ScreenUtil().setSp(60.0)
  264.                           ),
  265.                           textAlign: TextAlign.center,
  266.                         ),
  267.  
  268.  
  269.                         // Padding Before Session Dropdown
  270.                         new Padding(
  271.                           padding: EdgeInsets.only(top: 10.0),
  272.                         ),
  273.  
  274.                         // Session Dropdown Start
  275.                         FutureBuilder(
  276.                           future: getSessionsList(),
  277.                           builder: (BuildContext context, AsyncSnapshot snapshot) {
  278.                             if (snapshot.hasData) {
  279.                               return new DropdownButtonFormField(
  280.                                 value: selectedSession,
  281.                                 hint: new Text("Please  Select Session"),
  282.                                 decoration: dropDownButtonDecoration,
  283.  
  284.                                 onChanged: (data) {
  285.                                   print("Selected Session Id : ${data}");
  286.                                   // Enable Branch Selecter If Something is Selected
  287.                                   isBranchSelecterVisible = true;
  288.                                   // Reset Everything If Changed and rebuild
  289.                                   selectedBranch = "-1";
  290.                                   selectedSemister = "-1";
  291.                                   selectedSubject = "-1";
  292.                                   selectedPeriod = "-1";
  293.                                   // End Reset
  294.                                   print(selectedSession);
  295.                                   setState(() {
  296.                                     selectedSession = data;
  297.                                   });
  298.                                 },
  299.                                 items: snapshot.data,
  300.                               );
  301.                             }
  302.                             else{
  303.                               return CircularProgressIndicator();
  304.                             }
  305.                           },
  306.                         ),
  307.  
  308.                         // Padding Before Branch Selecter
  309.                         new Padding(
  310.                           padding: EdgeInsets.only(top: 10.0),
  311.                         ),
  312.  
  313.                         // Branch Selecter
  314.                         isBranchSelecterVisible ?
  315.                         new FutureBuilder(
  316.                           future: getBranchList(),
  317.                           builder: (BuildContext context, AsyncSnapshot snapshot) {
  318.                             if (snapshot.hasData) {
  319.                               return new DropdownButtonFormField(
  320.                                 decoration: dropDownButtonDecoration,
  321.                                 value: selectedBranch,
  322.                                 hint: new Text("Please Select Session"),
  323.  
  324.                                 onChanged: (data) {
  325.                                   print("Selected Branch Id : ${data}");
  326.                                   // Enable Semsiter Selecter if Something is Selected
  327.                                   isSemisterSelecterVisible = true;
  328.                                   // Reset Everything If Changed and rebuild
  329.                                   selectedSemister = "-1";
  330.                                   selectedSubject = "-1";
  331.                                   selectedPeriod = "-1";
  332.                                   // End Reset
  333.  
  334.                                   setState(() {
  335.                                     selectedBranch = data;
  336.                                   });
  337.                                 },
  338.                                 items: snapshot.data,
  339.                               );
  340.                             }
  341.                             else{
  342.                               return CircularProgressIndicator();
  343.                             }
  344.                           },
  345.                         ) : new Container(),
  346.  
  347.  
  348.                         // End of Branch Selecter
  349.                         new Padding(
  350.                           padding: EdgeInsets.only(top: 10.0),
  351.                         ),
  352.  
  353.  
  354.                         // Semister Selecter
  355.                         isSemisterSelecterVisible ?
  356.                         new FutureBuilder(
  357.                           future: getSemisterList(),
  358.                           builder: (BuildContext context, AsyncSnapshot snapshot) {
  359.                             if (snapshot.hasData) {
  360.                               return new DropdownButtonFormField(
  361.                                 decoration: dropDownButtonDecoration,
  362.                                 value: selectedSemister,
  363.                                 hint: new Text("Please Select Session"),
  364.  
  365.                                 onChanged: (data) {
  366.                                   print("Selected Semister Id : ${data}");
  367.                                   // Enable Semsiter Selecter if Something is Selected
  368.                                   isSubjectSelecterVisible = true;
  369.                                   // Reset Everything If Changed and rebuild
  370.                                   selectedSubject = "-1";
  371.                                   selectedPeriod = "-1";
  372.                                   // End Reset
  373.                                   setState(() {
  374.                                     selectedSemister = data;
  375.                                   });
  376.                                 },
  377.                                 items: snapshot.data,
  378.                               );
  379.                             }
  380.                             else{
  381.                               return CircularProgressIndicator();
  382.                             }
  383.                           },
  384.                         ) : new Container(),
  385.                         // Semister Slecter End
  386.  
  387.                         // Padding before subject selecter
  388.                         new Padding(
  389.                           padding: EdgeInsets.only(top: 10.0),
  390.                         ),
  391.  
  392.                         // Subject Selecter Start
  393.                         isSubjectSelecterVisible ?
  394.                         new FutureBuilder(
  395.                           future: getSubjectList(),
  396.                           builder: (BuildContext context, AsyncSnapshot snapshot) {
  397.                             if (snapshot.hasData) {
  398.                               return new DropdownButtonFormField(
  399.                                 decoration: dropDownButtonDecoration,
  400.                                 value: selectedSubject,
  401.                                 hint: new Text("Please Select Subject"),
  402.  
  403.                                 onChanged: (data) {
  404.                                   print("Selected Subject Id : ${data}");
  405.                                   // Enable Semsiter Selecter if Something is Selected
  406.                                   isPeriodSelecterVisible = true;
  407.                                   // Reset Everything If Changed and rebuild
  408.                                   selectedPeriod = "-1";
  409.                                   // End Reset
  410.                                   setState(() {
  411.                                     selectedSubject = data;
  412.                                   });
  413.                                 },
  414.                                 items: snapshot.data,
  415.                               );
  416.                             }
  417.                             else{
  418.                               return CircularProgressIndicator();
  419.                             }
  420.                           },
  421.                         ) : new Container(),
  422.                         // Subject Selecter End
  423.  
  424.                         // Padding Before Period Selecter
  425.                         new Padding(
  426.                           padding: EdgeInsets.only(top: 10.0),
  427.                         ),
  428.  
  429.  
  430.                         // Period Selecter Start
  431.                         isPeriodSelecterVisible ?
  432.                               new DropdownButtonFormField(
  433.                                 decoration: dropDownButtonDecoration,
  434.                                 value: selectedPeriod,
  435.                                 hint: new Text("Please Select Subject"),
  436.  
  437.                                 onChanged: (data) {
  438.                                   print("Selected Period Id : ${data}");
  439.                                  
  440.                                   setState(() {
  441.                                     selectedPeriod = data;
  442.                                   });
  443.                                 },
  444.                                 items: getPeriodList(),
  445.                         ) : new Container(),
  446.  
  447.                         // Period Selecter end
  448.  
  449.                         // Padding Before Start And End Time
  450.                         new Padding(
  451.                           padding: EdgeInsets.only(top: 15.0),
  452.                         ),
  453.  
  454.  
  455.                         // Show Period Start And End Times
  456.                         (selectedPeriod != "-1") ?
  457.                         new Row(
  458.                           mainAxisAlignment: MainAxisAlignment.spaceAround,
  459.                           children: <Widget>[
  460.                             new Text(
  461.                               "Start Time\n${periods[int.parse(selectedPeriod)]["Start"]}",
  462.                               style: TextStyle(
  463.                                 fontSize: ScreenUtil().setSp(60.0),
  464.                                 fontWeight: FontWeight.bold
  465.                               ),
  466.                               textAlign: TextAlign.center,
  467.                             ),
  468.                             new Text(
  469.                               "End Time\n${periods[int.parse(selectedPeriod)]["End"]}",
  470.                               style: TextStyle(
  471.                                 fontSize: ScreenUtil().setSp(60.0),
  472.                                 fontWeight: FontWeight.bold
  473.                               ),
  474.                               textAlign: TextAlign.center,
  475.                             ),
  476.                           ],
  477.                         ) : new Container(),
  478.                         // Show Period Start And End Time End
  479.  
  480.  
  481.                         // Padding Before Button
  482.                         new Padding(
  483.                           padding: EdgeInsets.only(top: 20.0),
  484.                         ),
  485.                         // Mark Attendance Button
  486.                         new SizedBox(
  487.                           width: ScreenUtil().setWidth(800.0),
  488.                           height: ScreenUtil().setHeight(150.0),
  489.                          
  490.                           child: new RaisedButton(
  491.                             onPressed: (){
  492.  
  493.                             },
  494.                             color: ColorConfig.backgroundColor,
  495.                             child: new Padding(
  496.                               padding: EdgeInsets.all(5.0),
  497.                               child: new Text(
  498.                               "Start Taking Attendance",
  499.                               style: TextStyle(
  500.                                 color: Colors.white,
  501.                                 fontSize: ScreenUtil().setSp(60.0)
  502.                               ),
  503.                             ),
  504.                             )
  505.                           ),
  506.                         )
  507.  
  508.                       ],
  509.                     ),
  510.                   ),
  511.                 ),
  512.               )
  513.             ],
  514.           ),
  515.         )
  516.       )
  517.     );
  518.   }
  519. }
Add Comment
Please, Sign In to add comment