Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 3.30 KB | None | 0 0
  1. import 'package:auto_size_text/auto_size_text.dart';
  2. import 'package:cloud_firestore/cloud_firestore.dart';
  3. import 'package:dotted_border/dotted_border.dart';
  4. import 'package:easytickets/src/backend/dialogs/dialogDisplayTicket.dart';
  5. import 'package:easytickets/src/backend/firebase/database.dart';
  6. import 'package:easytickets/src/backend/language/appLocalizations.dart';
  7. import 'package:easytickets/src/backend/utils/design/textReferences.dart';
  8. import 'package:firebase_auth/firebase_auth.dart';
  9. import 'package:flutter/material.dart';
  10. import 'package:qr_flutter/qr_flutter.dart';
  11.  
  12. class TicketsPage extends StatefulWidget {
  13.  
  14.   final FirebaseUser user;
  15.   TicketsPage({Key key, @required this.user}) : assert(user != null), super(key: key);
  16.  
  17.   @override
  18.   _TicketsPageState createState() => _TicketsPageState();
  19. }
  20.  
  21. class _TicketsPageState extends State<TicketsPage> {
  22.  
  23.   final Firestore db = Firestore.instance;
  24.  
  25.   int ticketsNumber;
  26.   bool isLoading = true;
  27.  
  28.   @override
  29.   void initState() {
  30.  
  31.     Database().getTicketsNumber(widget.user).then((int gettedTicketsNumber) {
  32.       setState(() {
  33.         ticketsNumber = gettedTicketsNumber;
  34.       });
  35.     }).whenComplete(() {
  36.       isLoading = false;
  37.     });
  38.  
  39.     super.initState();
  40.   }
  41.  
  42.   @override
  43.   Widget build(BuildContext context) {
  44.     return StreamBuilder<QuerySnapshot>(
  45.       stream: db.collection("data").document(widget.user.uid).collection("tickets").snapshots(),
  46.       builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
  47.         if (snapshot.hasData) {
  48.           return Column(
  49.               mainAxisAlignment: MainAxisAlignment.start,
  50.               crossAxisAlignment: CrossAxisAlignment.start,
  51.               children: <Widget>[
  52.                 textPageTitle(context),
  53.                 Expanded(
  54.                     child: isLoading ? Center(child: CircularProgressIndicator()) : ListView(children: ticketsNumber > 0 ? getTickets(widget.user, snapshot) : <Widget>[placeholderNoTickets(context)])
  55.                 )
  56.               ]
  57.           );
  58.         } else if (snapshot.hasError){
  59.           return Center(
  60.             child: AutoSizeText(
  61.               AppLocalizations.of(context).errorGetTicket,
  62.               style: TextReferences().textStyleErrorGetTickets(),
  63.               maxLines: 2,
  64.               softWrap: true
  65.             )
  66.           );
  67.         } else {
  68.           return Center(
  69.             child: CircularProgressIndicator()
  70.           );
  71.         }
  72.       }
  73.     );
  74.   }
  75.  
  76.   // Metodo per predere i dati dei biglietti nel database
  77.   List<Widget> getTickets(FirebaseUser user, AsyncSnapshot<QuerySnapshot> snapshot) => snapshot.data.documents.map((document) => ticketModel(context, user, document)).toList();
  78.  
  79.   // Titolo della pagina
  80.   Widget textPageTitle(BuildContext context) {
  81.     return Padding(
  82.         padding: EdgeInsets.only(
  83.           top: MediaQuery.of(context).size.height / 45,
  84.           right: MediaQuery.of(context).size.width / 22.5,
  85.           left: MediaQuery.of(context).size.width / 22.5,
  86.           bottom: MediaQuery.of(context).size.height / 35
  87.         ),
  88.         child: AutoSizeText(
  89.             AppLocalizations.of(context).ticketsPageTitle,
  90.             style: TextReferences().textStyleTicketsPageTile(),
  91.             maxLines: 2,
  92.             softWrap: true
  93.         )
  94.     );
  95.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement