Skip to content

Instantly share code, notes, and snippets.

@romanejaquez
Created February 28, 2022 19:15
Show Gist options
  • Save romanejaquez/10439b7a37943d7ec48d854df470a02e to your computer and use it in GitHub Desktop.
Save romanejaquez/10439b7a37943d7ec48d854df470a02e to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
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(MessageApp());
}
class MessageApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
textTheme: GoogleFonts.poppinsTextTheme(
Theme.of(context).textTheme
)
),
home: MessageWidget()
);
}
}
class MessageWidget extends StatelessWidget {
String documentId = 'user1';
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(documentId.toUpperCase(), style: const TextStyle(color: Colors.blue, fontSize: 20)),
StreamBuilder(
stream: FirebaseFirestore.instance.collection('users').doc(documentId).snapshots(),
builder: (context, snapshot) {
var message = '--No message--';
if (snapshot.hasData) {
var messageDoc = (snapshot.data as DocumentSnapshot).data() as Map<String, dynamic>;
message = messageDoc['message'];
}
return Text(message);
}
),
TextButton(
onPressed: () {
FirebaseFirestore.instance.collection('users').doc(documentId).update({
'message': 'New Message sent ' + DateTime.now().toString()
});
},
child: Text("Click me to send Message to " + documentId)
)
]
)
)
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment