Majid Hajian
Majid Hajian is a passionate software developer with years of developing and architecting complex web and mobile applications. He is passionate about web platform especially flutter, IoT, PWAs, and performance.
Majid Hajian
mhadaily
Darren
Majid Hajian
mhadaily
import 'package:flutter/material.dart';
MaterialApp(
ThemeData(
name: "Majid Hajian",
location: "Oslo, Norway",
description: '''
Google Developer Expert
Passionate Software engineer,
Community Leader, Author and international Speaker
''',
main: "Head of DevRel at Invertase.io",
homepage: "https://www.majidhajian.com",
socials: {
twitter: "https://www.twitter.com/mhadaily",
github: "https://www.github.com/mhadaily"
},
author: {
Pluralsight: "www.pluralsight.com/authors/majid-hajian",
Apress: "Progressive Web App with Angular, Book",
PacktPub: "PWA development",
Udemy: "PWA development",
}
founder: "Softiware As (www.Softiware.com)"
devDependencies: {
tea: "Ginger",
mac: "10.14+",
},
community: {
FlutterVikings: "Orginizer",
FlutterCommunity: "Admin/Lead",
...more
},
),
);
Find me on the internet by
Head of DevRel at Invertase
Majid Hajian
flutter create geek_photos
flutter pub global activate flutterfire_cli
flutter pub add firebase_core
flutter pub add cloud_firestore
flutter pub add firebase_storage
mhadaily
mhadaily
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';
import 'firebase_options.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform
);
runApp(const MyApp());
}
mhadaily
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Vacation photos")),
body: Container(),
floatingActionButton: const FloatingActionButton(
onPressed: addPictures,
child: Icon(Icons.add),
),
);
}
}
// Basic homepage
mhadaily
Future<void> addPictures() async {
final filePickerResult = await FilePicker.platform.pickFiles();
if (filePickerResult == null) return;
for (var file in filePickerResult.files) {
final result = await FirebaseStorage.instance
.ref('photos/${file.name}')
.putData(
file.bytes!,
SettableMetadata(contentType: mime.lookupMimeType(file.name)),
);
await FirebaseFirestore.instance.collection('photos').add({
'createdAt': DateTime.now().toIso8601String(),
'imageUrl': result.ref.fullPath,
});
}
}
mhadaily
mhadaily
mhadaily
mhadaily
mhadaily
Future<String> getThumbnail(String photoPath) async {
final ext = path.extension(photoPath);
final name = path.basenameWithoutExtension(photoPath);
final thumbnailPath = 'photos/thumbnails/${name}_200x200$ext';
final ref = FirebaseStorage.instance.ref(thumbnailPath);
while (true) {
try {
await ref.getMetadata();
return ref.getDownloadURL();
} catch (e) {
await Future.delayed(const Duration(milliseconds: 1000));
}
}
}
mhadaily
mhadaily
mhadaily
Future<void> sendEmailWithPhoto(String url) async {
await FirebaseFirestore.instance
.collection('sharedPhotos')
.add({
'to': 'awesome@extensions.dev',
'message': {
'subject': 'Vacation photo 🏞',
'html': '<img src="$url" />',
'text': 'Check out this photo 👀',
}
});
}
mhadaily
mhadaily
const body = 'Hey, check my photo now! $photoUrl';
const smsBody = {
to: '$phoneNumber',
body: body,
};
const whatsappBody = {
from: 'whatsapp:+14155238886',
to: 'whatsapp:$phoneNumber',
body: body,
};
Future<void> sendSmsWithPhoto(
String photoUrl,
String phoneNumber,
) async {
await FirebaseFirestore.instance
.collection('messages')
.add({
to: '$phoneNumber',
body: 'Hey, check my photo now! $photoUrl',
});
}
Future<void> sendWhatsappMsgWithPhoto(
String photoUrl,
String phoneNumber,
) async {
await FirebaseFirestore.instance
.collection('messages')
.add({
from: `whatsapp:${TWILIO_FROM_NUMBER}`,
to: `whatsapp:${phoneNumber}`,
body: 'Hey, check my photo now! $photoUrl',
});
}
Find me on the internet by
Head of DevRel at Invertase
Majid Hajian
Slides
slides.com/mhadaily
By Majid Hajian
Majid Hajian is a passionate software developer with years of developing and architecting complex web and mobile applications. He is passionate about web platform especially flutter, IoT, PWAs, and performance.