Merge branch 'Firebase' into 'main'
Firebase See merge request Gruber.Nicolas/oggauer_gemeindetrommler!4
This commit is contained in:
@@ -44,13 +44,14 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId "com.example.demoapp"
|
applicationId "com.oggauergemeindetrommler.app"
|
||||||
// You can update the following values to match your application needs.
|
// You can update the following values to match your application needs.
|
||||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||||
minSdkVersion flutter.minSdkVersion
|
minSdkVersion 19
|
||||||
targetSdkVersion flutter.targetSdkVersion
|
targetSdkVersion flutter.targetSdkVersion
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
|
multiDexEnabled true
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"project_info": {
|
||||||
|
"project_number": "576683162451",
|
||||||
|
"project_id": "gemeinde-trommler",
|
||||||
|
"storage_bucket": "gemeinde-trommler.appspot.com"
|
||||||
|
},
|
||||||
|
"client": [
|
||||||
|
{
|
||||||
|
"client_info": {
|
||||||
|
"mobilesdk_app_id": "1:576683162451:android:48edba9829ee7925083fa6",
|
||||||
|
"android_client_info": {
|
||||||
|
"package_name": "com.oggauergemeindetrommler.app"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"oauth_client": [
|
||||||
|
{
|
||||||
|
"client_id": "576683162451-pl7mb5k00rj5dhg3krqcqh8bpvn8ijbq.apps.googleusercontent.com",
|
||||||
|
"client_type": 3
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"api_key": [
|
||||||
|
{
|
||||||
|
"current_key": "AIzaSyAWjSjX1f2rGUGHLbXQS873DYY_oXqcHhs"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"services": {
|
||||||
|
"appinvite_service": {
|
||||||
|
"other_platform_oauth_client": [
|
||||||
|
{
|
||||||
|
"client_id": "576683162451-pl7mb5k00rj5dhg3krqcqh8bpvn8ijbq.apps.googleusercontent.com",
|
||||||
|
"client_type": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"client_id": "576683162451-vf1g0qoge66lb3bmpsg4neckv4opovub.apps.googleusercontent.com",
|
||||||
|
"client_type": 2,
|
||||||
|
"ios_info": {
|
||||||
|
"bundle_id": "com.oggauergemeindetrommler.app"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configuration_version": "1"
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.example.demoapp">
|
package="com.oggauergemeindetrommler.app">
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
the Flutter tool needs it to communicate with the running application
|
the Flutter tool needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.example.demoapp">
|
package="com.oggauergemeindetrommler.app">
|
||||||
<application
|
<application
|
||||||
android:label="Oggauer Gemeindetrommler"
|
android:label="Oggauer Gemeindetrommler"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
package com.example.oggauer_gemeindetrommler
|
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() {
|
|
||||||
}
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.example.demoapp
|
package com.oggauergemeindetrommler.app
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.example.demoapp">
|
package="com.oggauergemeindetrommler.app">
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
<!-- The INTERNET permission is required for development. Specifically,
|
||||||
the Flutter tool needs it to communicate with the running application
|
the Flutter tool needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CLIENT_ID</key>
|
||||||
|
<string>576683162451-vf1g0qoge66lb3bmpsg4neckv4opovub.apps.googleusercontent.com</string>
|
||||||
|
<key>REVERSED_CLIENT_ID</key>
|
||||||
|
<string>com.googleusercontent.apps.576683162451-vf1g0qoge66lb3bmpsg4neckv4opovub</string>
|
||||||
|
<key>API_KEY</key>
|
||||||
|
<string>AIzaSyDV441PhkPEC7igZmYMpJ_axLMc2bKQ5fY</string>
|
||||||
|
<key>GCM_SENDER_ID</key>
|
||||||
|
<string>576683162451</string>
|
||||||
|
<key>PLIST_VERSION</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>BUNDLE_ID</key>
|
||||||
|
<string>com.oggauergemeindetrommler.app</string>
|
||||||
|
<key>PROJECT_ID</key>
|
||||||
|
<string>gemeinde-trommler</string>
|
||||||
|
<key>STORAGE_BUCKET</key>
|
||||||
|
<string>gemeinde-trommler.appspot.com</string>
|
||||||
|
<key>IS_ADS_ENABLED</key>
|
||||||
|
<false></false>
|
||||||
|
<key>IS_ANALYTICS_ENABLED</key>
|
||||||
|
<false></false>
|
||||||
|
<key>IS_APPINVITE_ENABLED</key>
|
||||||
|
<true></true>
|
||||||
|
<key>IS_GCM_ENABLED</key>
|
||||||
|
<true></true>
|
||||||
|
<key>IS_SIGNIN_ENABLED</key>
|
||||||
|
<true></true>
|
||||||
|
<key>GOOGLE_APP_ID</key>
|
||||||
|
<string>1:576683162451:ios:2fd841a4b4ca70d5083fa6</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -5,15 +5,15 @@
|
|||||||
<key>CFBundleDevelopmentRegion</key>
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>Demoapp</string>
|
<string>Oggauer GemeindeTrommler</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$(EXECUTABLE_NAME)</string>
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
<string>com.oggauergemeindetrommler.app</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>demoapp</string>
|
<string>oggauer_gemeinde_trommler</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"file_generated_by": "FlutterFire CLI",
|
||||||
|
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
|
||||||
|
"GOOGLE_APP_ID": "1:576683162451:ios:f3e9140edfc4c945083fa6",
|
||||||
|
"FIREBASE_PROJECT_ID": "gemeinde-trommler",
|
||||||
|
"GCM_SENDER_ID": "576683162451"
|
||||||
|
}
|
||||||
+65
-4
@@ -1,13 +1,18 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:firebase_storage/firebase_storage.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||||
|
|
||||||
|
|
||||||
class AddScreen extends StatefulWidget {
|
class AddScreen extends StatefulWidget {
|
||||||
const AddScreen({super.key});
|
final int initialIndex;
|
||||||
|
|
||||||
|
AddScreen({required this.initialIndex});
|
||||||
@override
|
@override
|
||||||
_AddScreenState createState() => _AddScreenState();
|
_AddScreenState createState() => _AddScreenState();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AddScreenState extends State<AddScreen> {
|
class _AddScreenState extends State<AddScreen> {
|
||||||
@@ -15,6 +20,14 @@ class _AddScreenState extends State<AddScreen> {
|
|||||||
final _titleController = TextEditingController();
|
final _titleController = TextEditingController();
|
||||||
final _descriptionController = TextEditingController();
|
final _descriptionController = TextEditingController();
|
||||||
File? _imageFile;
|
File? _imageFile;
|
||||||
|
bool _uploading = false;
|
||||||
|
int _selectedIndex = 0;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
_selectedIndex = widget.initialIndex;
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _getImage(ImageSource source) async {
|
Future<void> _getImage(ImageSource source) async {
|
||||||
final pickedFile = await ImagePicker().getImage(source: source);
|
final pickedFile = await ImagePicker().getImage(source: source);
|
||||||
@@ -26,6 +39,41 @@ class _AddScreenState extends State<AddScreen> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Future<void> addNewElementToFirestore(String title, String description, File imageFile) async {
|
||||||
|
// Zunächst das Bild in Firebase Storage speichern
|
||||||
|
|
||||||
|
|
||||||
|
// Das neue Element in der Firestore-Sammlung "Issues" speichern
|
||||||
|
if(_selectedIndex == 1)
|
||||||
|
{
|
||||||
|
Reference ref = FirebaseStorage.instance.ref().child("Issues/${DateTime.now().toString()}");
|
||||||
|
UploadTask uploadTask = ref.putFile(imageFile);
|
||||||
|
String imageUrl = await (await uploadTask).ref.getDownloadURL();
|
||||||
|
|
||||||
|
await FirebaseFirestore.instance.collection("Issues").add({
|
||||||
|
"title": title,
|
||||||
|
"description": description,
|
||||||
|
"imageUrl": imageUrl,
|
||||||
|
"createdDate": DateTime.now(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Reference ref = FirebaseStorage.instance.ref().child("News/${DateTime.now().toString()}");
|
||||||
|
UploadTask uploadTask = ref.putFile(imageFile);
|
||||||
|
String imageUrl = await (await uploadTask).ref.getDownloadURL();
|
||||||
|
await FirebaseFirestore.instance.collection("News").add({
|
||||||
|
"title": title,
|
||||||
|
"description": description,
|
||||||
|
"imageUrl": imageUrl,
|
||||||
|
"createdDate": DateTime.now(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
@@ -49,12 +97,25 @@ class _AddScreenState extends State<AddScreen> {
|
|||||||
padding: const EdgeInsets.only(right: 8.0),
|
padding: const EdgeInsets.only(right: 8.0),
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
icon: Icon(Icons.check),
|
icon: Icon(Icons.check),
|
||||||
onPressed: () {
|
onPressed: () async {
|
||||||
if (_formKey.currentState!.validate()) {
|
if (_formKey.currentState!.validate() && _imageFile != null && !_uploading) {
|
||||||
// Hier wird die Logik zum Hinzufügen des neuen Elements ausgeführt
|
setState(() {
|
||||||
|
_uploading = true;
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
await addNewElementToFirestore(_titleController.text, _descriptionController.text, _imageFile!);
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
// Fehlerbehandlung hier
|
||||||
|
} finally {
|
||||||
|
setState(() {
|
||||||
|
_uploading = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
+136
-91
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'DetailPage.dart';
|
import 'DetailPage.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
@@ -96,108 +97,152 @@ class UserDefinedItem extends StatelessWidget {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class NewsList extends StatefulWidget {
|
||||||
class NewsList extends StatelessWidget {
|
const NewsList({Key? key}) : super(key: key);
|
||||||
const NewsList({super.key});
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
_NewsListState createState() => _NewsListState();
|
||||||
return ListView(
|
|
||||||
|
|
||||||
children: [
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Rosalia Kapelle',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Kirche der Marktgemeinde Oggau',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Die römisch-katholische Pfarrkirche Oggau steht abseits der Hauptstraße in einem ehemaligen ummauerten Friedhof in der Marktgemeinde Oggau am Neusiedler See im Bezirk Eisenstadt-Umgebung im Burgenland. Die der Heiligen Dreifaltigkeit und Simon Zelotes und Judas Thaddäus geweihte Pfarrkirche gehört zum Dekanat Eisenstadt-Rust in der Diözese Eisenstadt. Die Kirche steht unter Denkmalschutz.',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/e/e6/Oggau_Kirche2.JPG'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Gasthaus Monika',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Herzlich willkommen im Gasthaus Monika\nDas traditionelle Gasthaus Monika in Oggau am Neusiedler See steht bereits seit vielen Jahren für Gastfreundschaft. Vor über 80 Jahren wurde das Wirtshaus erbaut und stetig modernisiert. Mit der Übernahme im Jahr 1975 hat sich Familie Gmasz es sich zur Aufgabe gemacht, ihr Wirtshaus authentisch und traditionell weiterzuführen.\nDas freundliche und kompetente Team rund um Monika Gmasz, verwöhnt seine Gäste mit guter, bodenständiger Küche in gemütlicher Atmosphäre.\nIm Juni, Juli und August haben wir für Sie auch jeden Montag geöffnet.',
|
|
||||||
image: Image.network('https://thumbor.apps.unitecms.io/unsafe/1400x0/https://ama-media.ams3.digitaloceanspaces.com/5f4e06d582ddc/a_pov81202.jpg'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Sebastiankeller',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Kulinarik - Spezialitäten von Sonja und Bernhard Landauer\nGemeinsam mit meinem Sohn Bernhard und unserem Küchenteam sorgen wir für besondere und vor allem regionalen und traditionellen, kulinarischen Genüsse. Mein Mann, Ossi Landauer und das Serviceteam ist um Ihr Wohl bemüht und lässt keine Wünsche offen.\nAuf der Speisekarte des Sebastiankellers sind neben Fisch, -Grill, -Sautanzspezialitäten viele saisonale Schmankerl und auch nicht alltägliche Gerichte wie „Gebackenen Fledermäuse“ (da ist das beste Teil vom Schweinsschlögl) oder „Geschmorte Rindswangerl“, zu finden.\nÜberwiegend werden regionale Produkte, zum Teil aus eigenem Anbau verarbeitet. So kommen die Brombeeren, Zwetschen, Quitten, Hollunder oder Kürbisse aus unserem eigenen Garten. Was an Früchten zu viel ist wird, kochen wir ein, wird zu Saft verarbeitet oder destilliert.',
|
|
||||||
image: Image.network('https://10619-2.s.cdn12.com/rests/original/315_49137159.jpg'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Rosalia Kapelle',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Rosalia Kapelle',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Rosalia Kapelle',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Kapelle bei der Ausfahrt von Oggau',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/d/d7/Oggau_Rosaliakapelle.JPG'),
|
|
||||||
),
|
|
||||||
UserDefinedItem(
|
|
||||||
title: 'Gemeinde Amt Oggau',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Gemeide Amt der Marktgemeinde Oggau. SPÖ regierend',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/a/a1/Oggau_am_Neusiedler_See_-_Gemeindeamt_%2801%29.jpg'),
|
|
||||||
),
|
|
||||||
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IssueList issueList = IssueList();
|
class _NewsListState extends State<NewsList> {
|
||||||
|
final FirebaseFirestore firestore = FirebaseFirestore.instance;
|
||||||
|
late Stream<QuerySnapshot> newsStream;
|
||||||
|
|
||||||
class IssueList extends StatelessWidget {
|
@override
|
||||||
final List<UserDefinedItem> _items = [];
|
void initState() {
|
||||||
|
super.initState();
|
||||||
IssueList({super.key});
|
newsStream = firestore.collection('News').snapshots();
|
||||||
|
|
||||||
void addUDI(UserDefinedItem udi) {
|
|
||||||
_items.add(udi);
|
|
||||||
}
|
|
||||||
|
|
||||||
void removeUDI(UserDefinedItem udi) {
|
|
||||||
_items.remove(udi);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final UserDefinedItem item1 = UserDefinedItem(
|
return StreamBuilder<QuerySnapshot>(
|
||||||
title: 'Licht ausgebrannt',
|
stream: newsStream,
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
|
||||||
description: 'Licht ist ausgebrannt in der Sebastianstraße',
|
if (snapshot.hasError) {
|
||||||
image: Image.network('https://api.ebsg.at/uploads/immo70/originals/objekt_809_oggau-am-neusiedler-see_7063_6021.jpeg',),
|
return Text('Error: ${snapshot.error}');
|
||||||
|
}
|
||||||
|
switch (snapshot.connectionState) {
|
||||||
|
case ConnectionState.waiting:
|
||||||
|
return const Text('Loading...');
|
||||||
|
default:
|
||||||
|
final List<QueryDocumentSnapshot> documents = snapshot.data!.docs;
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: documents.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
final Map<String, dynamic> data = documents[index].data()! as Map<String, dynamic>;
|
||||||
|
final DateTime createdDate = data['createdDate'].toDate();
|
||||||
|
final formattedDate = DateFormat('dd.MM.yyyy').format(createdDate);
|
||||||
|
return UserDefinedItem(
|
||||||
|
title: data['title'] ?? '',
|
||||||
|
datum: formattedDate,
|
||||||
|
description: data['description'] ?? '',
|
||||||
|
image: Image.network((data['imageUrl'])),
|
||||||
);
|
);
|
||||||
final UserDefinedItem item2 = UserDefinedItem(
|
},
|
||||||
title: 'test2',
|
|
||||||
datum: DateFormat('dd.MM.yyyy').format(DateTime.now()),
|
|
||||||
description: 'Gemeide Amt der Marktgemeinde Oggau. SPÖ regierend',
|
|
||||||
image: Image.network('https://upload.wikimedia.org/wikipedia/commons/a/a1/Oggau_am_Neusiedler_See_-_Gemeindeamt_%2801%29.jpg'),
|
|
||||||
);
|
);
|
||||||
//addUDI(item1);
|
}
|
||||||
//addUDI(item2);
|
},
|
||||||
return ListView(
|
);
|
||||||
children: _items.map((item) => UserDefinedItem(
|
}
|
||||||
title: item.title,
|
}
|
||||||
datum: item.datum,
|
|
||||||
description: item.description,
|
|
||||||
image: item.image,
|
class IssueList extends StatefulWidget {
|
||||||
),
|
const IssueList({Key? key}) : super(key: key);
|
||||||
).toList(),
|
|
||||||
|
@override
|
||||||
|
_IssueListState createState() => _IssueListState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _IssueListState extends State<IssueList> {
|
||||||
|
final FirebaseFirestore firestore = FirebaseFirestore.instance;
|
||||||
|
late Stream<QuerySnapshot> issueStream;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
issueStream = firestore.collection('Issues').snapshots();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return StreamBuilder<QuerySnapshot>(
|
||||||
|
stream: issueStream,
|
||||||
|
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
|
||||||
|
if (snapshot.hasError) {
|
||||||
|
return Text('Error: ${snapshot.error}');
|
||||||
|
}
|
||||||
|
switch (snapshot.connectionState) {
|
||||||
|
case ConnectionState.waiting:
|
||||||
|
return const Text('Loading...');
|
||||||
|
default:
|
||||||
|
final List<QueryDocumentSnapshot> documents = snapshot.data!.docs;
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: documents.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
final Map<String, dynamic> data = documents[index].data()! as Map<String, dynamic>;
|
||||||
|
final DateTime createdDate = data['createdDate'].toDate();
|
||||||
|
final formattedDate = DateFormat('dd.MM.yyyy').format(createdDate);
|
||||||
|
return UserDefinedItem(
|
||||||
|
title: data['title'] ?? '',
|
||||||
|
datum: formattedDate,
|
||||||
|
description: data['description'] ?? '',
|
||||||
|
image: Image.network((data['imageUrl'])),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class CitizensForum extends StatefulWidget {
|
||||||
|
const CitizensForum({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
_CitizensForum createState() => _CitizensForum();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _CitizensForum extends State<IssueList> {
|
||||||
|
final FirebaseFirestore firestore = FirebaseFirestore.instance;
|
||||||
|
late Stream<QuerySnapshot> citizenStream;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
citizenStream = firestore.collection('CitizensForum').snapshots();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return StreamBuilder<QuerySnapshot>(
|
||||||
|
stream: citizenStream,
|
||||||
|
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
|
||||||
|
if (snapshot.hasError) {
|
||||||
|
return Text('Error: ${snapshot.error}');
|
||||||
|
}
|
||||||
|
switch (snapshot.connectionState) {
|
||||||
|
case ConnectionState.waiting:
|
||||||
|
return const Text('Loading...');
|
||||||
|
default:
|
||||||
|
final List<QueryDocumentSnapshot> documents = snapshot.data!.docs;
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: documents.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
final Map<String, dynamic> data = documents[index].data()! as Map<String, dynamic>;
|
||||||
|
final DateTime createdDate = data['createdDate'].toDate();
|
||||||
|
final formattedDate = DateFormat('dd.MM.yyyy').format(createdDate);
|
||||||
|
return UserDefinedItem(
|
||||||
|
title: data['title'] ?? '',
|
||||||
|
datum: formattedDate,
|
||||||
|
description: data['description'] ?? '',
|
||||||
|
image: Image.network((data['imageUrl'])),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
// File generated by FlutterFire CLI.
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members
|
||||||
|
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
|
||||||
|
import 'package:flutter/foundation.dart'
|
||||||
|
show defaultTargetPlatform, kIsWeb, TargetPlatform;
|
||||||
|
|
||||||
|
/// Default [FirebaseOptions] for use with your Firebase apps.
|
||||||
|
///
|
||||||
|
/// Example:
|
||||||
|
/// ```dart
|
||||||
|
/// import 'firebase_options.dart';
|
||||||
|
/// // ...
|
||||||
|
/// await Firebase.initializeApp(
|
||||||
|
/// options: DefaultFirebaseOptions.currentPlatform,
|
||||||
|
/// );
|
||||||
|
/// ```
|
||||||
|
class DefaultFirebaseOptions {
|
||||||
|
static FirebaseOptions get currentPlatform {
|
||||||
|
if (kIsWeb) {
|
||||||
|
throw UnsupportedError(
|
||||||
|
'DefaultFirebaseOptions have not been configured for web - '
|
||||||
|
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
switch (defaultTargetPlatform) {
|
||||||
|
case TargetPlatform.android:
|
||||||
|
return android;
|
||||||
|
case TargetPlatform.iOS:
|
||||||
|
return ios;
|
||||||
|
case TargetPlatform.macOS:
|
||||||
|
throw UnsupportedError(
|
||||||
|
'DefaultFirebaseOptions have not been configured for macos - '
|
||||||
|
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||||
|
);
|
||||||
|
case TargetPlatform.windows:
|
||||||
|
throw UnsupportedError(
|
||||||
|
'DefaultFirebaseOptions have not been configured for windows - '
|
||||||
|
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||||
|
);
|
||||||
|
case TargetPlatform.linux:
|
||||||
|
throw UnsupportedError(
|
||||||
|
'DefaultFirebaseOptions have not been configured for linux - '
|
||||||
|
'you can reconfigure this by running the FlutterFire CLI again.',
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
throw UnsupportedError(
|
||||||
|
'DefaultFirebaseOptions are not supported for this platform.',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const FirebaseOptions android = FirebaseOptions(
|
||||||
|
apiKey: 'AIzaSyAWjSjX1f2rGUGHLbXQS873DYY_oXqcHhs',
|
||||||
|
appId: '1:576683162451:android:48edba9829ee7925083fa6',
|
||||||
|
messagingSenderId: '576683162451',
|
||||||
|
projectId: 'gemeinde-trommler',
|
||||||
|
storageBucket: 'gemeinde-trommler.appspot.com',
|
||||||
|
);
|
||||||
|
|
||||||
|
static const FirebaseOptions ios = FirebaseOptions(
|
||||||
|
apiKey: 'AIzaSyDV441PhkPEC7igZmYMpJ_axLMc2bKQ5fY',
|
||||||
|
appId: '1:576683162451:ios:f3e9140edfc4c945083fa6',
|
||||||
|
messagingSenderId: '576683162451',
|
||||||
|
projectId: 'gemeinde-trommler',
|
||||||
|
storageBucket: 'gemeinde-trommler.appspot.com',
|
||||||
|
iosClientId: '576683162451-vf1g0qoge66lb3bmpsg4neckv4opovub.apps.googleusercontent.com',
|
||||||
|
iosBundleId: 'com.example.demoapp',
|
||||||
|
);
|
||||||
|
}
|
||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
import 'package:demoapp/AddPage.dart';
|
import 'package:oggauergemeindetrommler/AddPage.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'UserDefinedList.dart';
|
import 'UserDefinedList.dart';
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final List<Widget> widgetOptions = <Widget>[
|
final List<Widget> widgetOptions = <Widget>[
|
||||||
const NewsList(),
|
const NewsList(),
|
||||||
login ? issueList: const Text(
|
login ? const IssueList(): const Text(
|
||||||
'Mängel (nur für angemeldete Benutzer verfügbar)',
|
'Mängel (nur für angemeldete Benutzer verfügbar)',
|
||||||
style: optionStyle,
|
style: optionStyle,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
@@ -70,7 +70,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(builder: (context) => AddScreen()),
|
MaterialPageRoute(builder: (context) => AddScreen(initialIndex: _selectedIndex,)),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
tooltip: "Add",
|
tooltip: "Add",
|
||||||
|
|||||||
+11
-1
@@ -2,9 +2,19 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'home.dart';
|
import 'home.dart';
|
||||||
|
import 'package:firebase_core/firebase_core.dart';
|
||||||
|
import 'firebase_options.dart';
|
||||||
|
|
||||||
void main() {
|
// ...
|
||||||
|
|
||||||
|
|
||||||
|
void main() async {
|
||||||
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
await Firebase.initializeApp(
|
||||||
|
options: DefaultFirebaseOptions.currentPlatform,
|
||||||
|
);
|
||||||
runApp(const MyApp());
|
runApp(const MyApp());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
|
|||||||
+123
-11
@@ -1,6 +1,14 @@
|
|||||||
# Generated by pub
|
# Generated by pub
|
||||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||||
packages:
|
packages:
|
||||||
|
_flutterfire_internals:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _flutterfire_internals
|
||||||
|
sha256: f175bc1414e4edf8c5b83372c98eeabecf8353f39c9da423c2cfdf1f1f508788
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -17,6 +25,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
|
change_app_package_name:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: change_app_package_name
|
||||||
|
sha256: f9ebaf68a4b5a68c581492579bb68273c523ef325fbf9ce2f1b57fb136ad023b
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.1.0"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -33,6 +49,30 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
|
cloud_firestore:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: cloud_firestore
|
||||||
|
sha256: f5431cf41ab5c5e9c64e03ac2af103e10be22bf89020f394130c04b81add0010
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.5.1"
|
||||||
|
cloud_firestore_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: cloud_firestore_platform_interface
|
||||||
|
sha256: "29349a0687bc31290ab81d1de2b1cdadb40d0ea3ab30d247323c6c5be0d4c6fc"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.12.0"
|
||||||
|
cloud_firestore_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: cloud_firestore_web
|
||||||
|
sha256: "228f1944fb3c61ddf5de3647ec5b6ed88d6aacb0a4d485ef597c1211fe98ef8b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.4.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -65,6 +105,78 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "1.3.1"
|
||||||
|
firebase_auth:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_auth
|
||||||
|
sha256: e5254a39daab8c5bc76b17f5a161c11a7a97a3718cd314f460e2b4366c850c7d
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.4.1"
|
||||||
|
firebase_auth_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_auth_platform_interface
|
||||||
|
sha256: "5d5f283517ba34afd69ef448cc81ea23bcf8887393bedae4f70f45060b045fb9"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.13.0"
|
||||||
|
firebase_auth_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_auth_web
|
||||||
|
sha256: c631ec90d05c990fe971774ff12e96ee88fc3dd22839d5cab3b04c8693859116
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.3.1"
|
||||||
|
firebase_core:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_core
|
||||||
|
sha256: ed611fb8e67e43ecc7956f242cecca383d87cf71aace27287aa5dd4bdba4ac07
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.9.0"
|
||||||
|
firebase_core_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core_platform_interface
|
||||||
|
sha256: "0df0a064ab0cad7f8836291ca6f3272edd7b83ad5b3540478ee46a0849d8022b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.6.0"
|
||||||
|
firebase_core_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_core_web
|
||||||
|
sha256: "347351a8f0518f3343d79a9a0690fa67ad232fc32e2ea270677791949eac792b"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.3.0"
|
||||||
|
firebase_storage:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_storage
|
||||||
|
sha256: a27909491c25acef90acc932be4d87bafb9d33fb98678edd2f81eaec9568a109
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "11.1.0"
|
||||||
|
firebase_storage_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_storage_platform_interface
|
||||||
|
sha256: f254e064890df4ee588f10bea06d679e047018910451a4bc3c529b9791adb0a9
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.2.0"
|
||||||
|
firebase_storage_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_storage_web
|
||||||
|
sha256: b6d3c104fecafdce5fe1795306d33856c9a11fa76f73fe7eb062430fc151d686
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.4.0"
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -82,10 +194,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: flutter_plugin_android_lifecycle
|
name: flutter_plugin_android_lifecycle
|
||||||
sha256: "4bef634684b2c7f3468c77c766c831229af829a0cd2d4ee6c1b99558bd14e5d2"
|
sha256: c224ac897bed083dabf11f238dd11a239809b446740be0c2044608c50029ffdf
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.8"
|
version: "2.0.9"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
@@ -116,34 +228,34 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: image_picker
|
name: image_picker
|
||||||
sha256: "22207768556b82d55ec70166824350fee32298732d5efa4d6e756f848f51f66a"
|
sha256: "8b0efbf350ba4f2be1531d629396a994983d0c02f4a82a128aed84d954b90cfa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.6+3"
|
version: "0.8.7+2"
|
||||||
image_picker_android:
|
image_picker_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_android
|
name: image_picker_android
|
||||||
sha256: "68d067baf7f6e401b1124ee83dd6967e67847314250fd68012aab34a69beb344"
|
sha256: dfb5b0f28b8786fcc662b7ed42bfb4b82a6cbbd74da1958384b10d40bdf212a7
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.5+7"
|
version: "0.8.6+6"
|
||||||
image_picker_for_web:
|
image_picker_for_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_for_web
|
name: image_picker_for_web
|
||||||
sha256: "66fc6e3877bbde82c33d122f3588777c3784ac5bd7d1cdd79213ef7aecb85b34"
|
sha256: "98f50d6b9f294c8ba35e25cc0d13b04bfddd25dbc8d32fa9d566a6572f2c081c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.11"
|
version: "2.1.12"
|
||||||
image_picker_ios:
|
image_picker_ios:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_ios
|
name: image_picker_ios
|
||||||
sha256: "39aa70b5f1e5e7c94585b9738632d5fdb764a5655e40cd9e7b95fbd2fc50c519"
|
sha256: a1546ff5861fc15812953d4733b520c3d371cec3d2859a001ff04c46c4d81883
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.6+9"
|
version: "0.8.7+3"
|
||||||
image_picker_platform_interface:
|
image_picker_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -287,4 +399,4 @@ packages:
|
|||||||
version: "2.1.4"
|
version: "2.1.4"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.18.2 <3.0.0"
|
dart: ">=2.18.2 <3.0.0"
|
||||||
flutter: ">=3.0.0"
|
flutter: ">=3.3.0"
|
||||||
|
|||||||
+7
-2
@@ -1,5 +1,5 @@
|
|||||||
name: demoapp
|
name: oggauergemeindetrommler
|
||||||
description: test app
|
description: Gemeinde Trommler
|
||||||
|
|
||||||
|
|
||||||
# The following line prevents the package from being accidentally published to
|
# The following line prevents the package from being accidentally published to
|
||||||
@@ -40,6 +40,11 @@ dependencies:
|
|||||||
# Use with the CupertinoIcons class for iOS style icons.
|
# Use with the CupertinoIcons class for iOS style icons.
|
||||||
cupertino_icons: ^1.0.2
|
cupertino_icons: ^1.0.2
|
||||||
image_picker: ^0.8.6+3
|
image_picker: ^0.8.6+3
|
||||||
|
firebase_core: ^2.9.0
|
||||||
|
firebase_auth: ^4.4.1
|
||||||
|
firebase_storage: ^11.1.0
|
||||||
|
cloud_firestore: ^4.5.1
|
||||||
|
change_app_package_name: ^1.1.0
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
import 'package:demoapp/main.dart';
|
import 'package:oggauergemeindetrommler/main.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||||
|
|||||||
Reference in New Issue
Block a user