Skip to content

Instantly share code, notes, and snippets.

@romanejaquez
Created March 2, 2022 17:05
Show Gist options
  • Save romanejaquez/a4299ce88d233658c8a23042e4fb1c8e to your computer and use it in GitHub Desktop.
Save romanejaquez/a4299ce88d233658c8a23042e4fb1c8e to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:intl/intl.dart' show toBeginningOfSentenceCase;
import 'package:google_fonts/google_fonts.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: const FirebaseOptions(
apiKey: "AIzaSyDOdBmVvI30Jg49oup4gsJMZMjTPhHOloQ",
authDomain: "fullstack-labs.firebaseapp.com",
databaseURL: "https://fullstack-labs.firebaseio.com",
projectId: "fullstack-labs",
storageBucket: "fullstack-labs.appspot.com",
messagingSenderId: "251418261584",
appId: "1:251418261584:web:2e01357a093d27476b7955"
)
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: darkBlue,
),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget()
),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
// it enable scrolling on small device
return Center(
child: FutureBuilder(
future: FirebaseFirestore.instance.collection('orders').get(),
builder: (context, snapshot) {
if (snapshot.hasData) {
List<QueryDocumentSnapshot> docs = (snapshot.data! as QuerySnapshot).docs;
return ListView.builder(
itemCount: docs.length,
itemBuilder: (context, index) {
var data = docs[index].data() as Map<String, dynamic>;
var dataOrders = data['orders'] as List<dynamic>;
var mappedDataOrders = dataOrders.map((o) => (o as Map<String, dynamic>)).toList();
return Container(
padding: const EdgeInsets.all(10),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(data['orderId'].toString(), style: TextStyle(fontSize: 30)),
const SizedBox(height: 20),
...List.generate(
mappedDataOrders.length,
(index) {
var order = mappedDataOrders[index] as Map<String, dynamic>;
return Text(order['title']);
}
)
]
)
);
}
);
}
return const Center(
child: SizedBox(
width: 100,
height: 100,
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.black),
strokeWidth: 5
)
)
);
}
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment