From df6c9ca73a26ac2c9f820df6df99d819f3a36db6 Mon Sep 17 00:00:00 2001 From: Nicolas Gruber Date: Thu, 20 Apr 2023 16:26:11 +0200 Subject: [PATCH 1/5] =?UTF-8?q?Datum=20beim=20layout=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/UserDefinedList.dart | 70 ++++++++++++++++++++++++++++------------ pubspec.lock | 30 ++++++++++------- pubspec.yaml | 1 + 3 files changed, 69 insertions(+), 32 deletions(-) diff --git a/lib/UserDefinedList.dart b/lib/UserDefinedList.dart index 2b44801..d082c47 100644 --- a/lib/UserDefinedList.dart +++ b/lib/UserDefinedList.dart @@ -1,34 +1,38 @@ import 'package:flutter/material.dart'; - import 'DetailPage.dart'; +import 'package:intl/intl.dart'; class UserDefinedItem extends StatelessWidget { final String title; + final String datum; final String description; final Image? image; - const UserDefinedItem({super.key, + const UserDefinedItem({ + Key? key, required this.title, required this.description, + required this.datum, this.image, - }); + }) : super(key: key); @override Widget build(BuildContext context) { - String shortDescription = "${description.substring(0, 30)}..."; + String shortDescription = "${description.substring(0,34)}..."; + return Padding( padding: const EdgeInsets.symmetric(vertical: 1.0), child: Card( child: InkWell( onTap: () { - // Open a new screen when the user taps on the list item + // Open a new screen when the user taps on the list item Navigator.push( - context, + context, MaterialPageRoute( builder: (context) => DetailPage( title: title, description: description, - image: image!= null ? image! : null, + image: image != null ? image! : null, ), ), ); @@ -40,17 +44,31 @@ class UserDefinedItem extends StatelessWidget { height: 130, child: image, ), - Expanded( + Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(8.0), - child: Text( - title, - style: const TextStyle( - fontSize: 24, // beliebige Schriftgröße - ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( + child: Text( + title, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 20, // beliebige Schriftgröße + ), + ), + ), + Text( + datum, + style: const TextStyle( + fontSize: 16, // beliebige Schriftgröße + ), + ), + ], ), ), Padding( @@ -67,7 +85,7 @@ class UserDefinedItem extends StatelessWidget { ), ], ), - ) + ), ), ); } @@ -76,6 +94,8 @@ class UserDefinedItem extends StatelessWidget { + + class NewsList extends StatelessWidget { const NewsList({super.key}); @@ -86,41 +106,49 @@ class NewsList extends StatelessWidget { 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'), ), @@ -149,26 +177,26 @@ class IssueList extends StatelessWidget { Widget build(BuildContext context) { final UserDefinedItem item1 = UserDefinedItem( title: 'Licht ausgebrannt', + datum: DateFormat('dd.MM.yyyy').format(DateTime.now()), description: 'Licht ist ausgebrannt in der Sebastianstraße', image: Image.network('https://api.ebsg.at/uploads/immo70/originals/objekt_809_oggau-am-neusiedler-see_7063_6021.jpeg',), ); 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( + children: _items.map((item) => UserDefinedItem( title: item.title, + datum: item.datum, description: item.description, image: item.image, - ), - ).toList(), + ), + ).toList(), ); } -} - - - +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index b8d192d..31be564 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -82,10 +82,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "4bef634684b2c7f3468c77c766c831229af829a0cd2d4ee6c1b99558bd14e5d2" + sha256: c224ac897bed083dabf11f238dd11a239809b446740be0c2044608c50029ffdf url: "https://pub.dev" source: hosted - version: "2.0.8" + version: "2.0.9" flutter_test: dependency: "direct dev" description: flutter @@ -116,34 +116,34 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "22207768556b82d55ec70166824350fee32298732d5efa4d6e756f848f51f66a" + sha256: f202f5d730eb8219e35e80c4461fb3a779940ad30ce8fde1586df756e3af25e6 url: "https://pub.dev" source: hosted - version: "0.8.6+3" + version: "0.8.7+3" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "68d067baf7f6e401b1124ee83dd6967e67847314250fd68012aab34a69beb344" + sha256: "1ea6870350f56af8dab716459bd9d5dc76947e29e07a2ba1d0c172eaaf4f269c" url: "https://pub.dev" source: hosted - version: "0.8.5+7" + version: "0.8.6+7" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "66fc6e3877bbde82c33d122f3588777c3784ac5bd7d1cdd79213ef7aecb85b34" + sha256: "98f50d6b9f294c8ba35e25cc0d13b04bfddd25dbc8d32fa9d566a6572f2c081c" url: "https://pub.dev" source: hosted - version: "2.1.11" + version: "2.1.12" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: "39aa70b5f1e5e7c94585b9738632d5fdb764a5655e40cd9e7b95fbd2fc50c519" + sha256: a1546ff5861fc15812953d4733b520c3d371cec3d2859a001ff04c46c4d81883 url: "https://pub.dev" source: hosted - version: "0.8.6+9" + version: "0.8.7+3" image_picker_platform_interface: dependency: transitive description: @@ -152,6 +152,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.6.3" + intl: + dependency: "direct main" + description: + name: intl + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" + source: hosted + version: "0.18.1" js: dependency: transitive description: @@ -279,4 +287,4 @@ packages: version: "2.1.4" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=3.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index a833461..c75d191 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 image_picker: ^0.8.6+3 + intl: ^0.18.1 dev_dependencies: flutter_test: From b0ec5061478d3d9536c2fab1fad2545913512b7d Mon Sep 17 00:00:00 2001 From: Schummi C Date: Thu, 20 Apr 2023 16:38:00 +0200 Subject: [PATCH 2/5] DetailPage mit Date --- lib/DetailPage.dart | 73 ++++++++++++++++++++++++++++++++++++++++++++- pubspec.lock | 26 ++++++++-------- pubspec.yaml | 5 +++- 3 files changed, 89 insertions(+), 15 deletions(-) diff --git a/lib/DetailPage.dart b/lib/DetailPage.dart index b20e089..1232d09 100644 --- a/lib/DetailPage.dart +++ b/lib/DetailPage.dart @@ -1,4 +1,74 @@ import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; + +class DetailPage extends StatelessWidget { + final String title; + final String description; + final Image? image; + + const DetailPage({ + Key? key, + required this.title, + required this.description, + required this.image, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final String formattedDate = DateFormat('dd.MM.yyyy').format(DateTime.now()); + + return Scaffold( + appBar: AppBar( + title: Text(title), + ), + body: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + padding: const EdgeInsets.all(8.0), + child: image, + ), + Container( + padding: const EdgeInsets.all(8.0), + child: Text( + title, + style: const TextStyle( + fontSize: 24, + fontWeight: FontWeight.bold, + ), + ), + ), + Container( + padding: const EdgeInsets.only(left: 8.0, bottom: 8.0), + child: Text( + formattedDate, + style: const TextStyle( + fontSize: 18, + ), + ), + ), + Container( + padding: const EdgeInsets.all(8.0), + child: Text( + description, + style: const TextStyle( + fontSize: 18, + ), + ), + ), + ], + ), + ), + ); + } +} + + + + + +/*import 'package:flutter/material.dart'; class DetailPage extends StatelessWidget { final String title; @@ -48,4 +118,5 @@ class DetailPage extends StatelessWidget { ), ); } -} +}*/ + diff --git a/pubspec.lock b/pubspec.lock index 31be564..aad0daf 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -82,10 +82,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: c224ac897bed083dabf11f238dd11a239809b446740be0c2044608c50029ffdf + sha256: "4bef634684b2c7f3468c77c766c831229af829a0cd2d4ee6c1b99558bd14e5d2" url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.0.8" flutter_test: dependency: "direct dev" description: flutter @@ -116,34 +116,34 @@ packages: dependency: "direct main" description: name: image_picker - sha256: f202f5d730eb8219e35e80c4461fb3a779940ad30ce8fde1586df756e3af25e6 + sha256: "22207768556b82d55ec70166824350fee32298732d5efa4d6e756f848f51f66a" url: "https://pub.dev" source: hosted - version: "0.8.7+3" + version: "0.8.6+3" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "1ea6870350f56af8dab716459bd9d5dc76947e29e07a2ba1d0c172eaaf4f269c" + sha256: "68d067baf7f6e401b1124ee83dd6967e67847314250fd68012aab34a69beb344" url: "https://pub.dev" source: hosted - version: "0.8.6+7" + version: "0.8.5+7" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "98f50d6b9f294c8ba35e25cc0d13b04bfddd25dbc8d32fa9d566a6572f2c081c" + sha256: "66fc6e3877bbde82c33d122f3588777c3784ac5bd7d1cdd79213ef7aecb85b34" url: "https://pub.dev" source: hosted - version: "2.1.12" + version: "2.1.11" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: a1546ff5861fc15812953d4733b520c3d371cec3d2859a001ff04c46c4d81883 + sha256: "39aa70b5f1e5e7c94585b9738632d5fdb764a5655e40cd9e7b95fbd2fc50c519" url: "https://pub.dev" source: hosted - version: "0.8.7+3" + version: "0.8.6+9" image_picker_platform_interface: dependency: transitive description: @@ -156,10 +156,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" url: "https://pub.dev" source: hosted - version: "0.18.1" + version: "0.17.0" js: dependency: transitive description: @@ -287,4 +287,4 @@ packages: version: "2.1.4" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=3.3.0" + flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index c75d191..ec0446c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,7 @@ name: demoapp description: test app + # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev @@ -31,13 +32,15 @@ environment: dependencies: flutter: sdk: flutter + intl: ^0.17.0 + # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 image_picker: ^0.8.6+3 - intl: ^0.18.1 + dev_dependencies: flutter_test: From d7a5e4a00713e4569e1fd997bea17cbd3f22e9c7 Mon Sep 17 00:00:00 2001 From: Nicolas Gruber Date: Thu, 20 Apr 2023 17:00:06 +0200 Subject: [PATCH 3/5] Enstand stunde --- lib/DetailPage.dart | 6 +++--- lib/UserDefinedList.dart | 21 ++++++++++++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/lib/DetailPage.dart b/lib/DetailPage.dart index 1232d09..155ccb4 100644 --- a/lib/DetailPage.dart +++ b/lib/DetailPage.dart @@ -3,20 +3,20 @@ import 'package:intl/intl.dart'; class DetailPage extends StatelessWidget { final String title; + final String datum; final String description; final Image? image; const DetailPage({ Key? key, required this.title, + required this.datum, required this.description, required this.image, }) : super(key: key); @override Widget build(BuildContext context) { - final String formattedDate = DateFormat('dd.MM.yyyy').format(DateTime.now()); - return Scaffold( appBar: AppBar( title: Text(title), @@ -42,7 +42,7 @@ class DetailPage extends StatelessWidget { Container( padding: const EdgeInsets.only(left: 8.0, bottom: 8.0), child: Text( - formattedDate, + datum, style: const TextStyle( fontSize: 18, ), diff --git a/lib/UserDefinedList.dart b/lib/UserDefinedList.dart index d082c47..330d00c 100644 --- a/lib/UserDefinedList.dart +++ b/lib/UserDefinedList.dart @@ -18,8 +18,6 @@ class UserDefinedItem extends StatelessWidget { @override Widget build(BuildContext context) { - String shortDescription = "${description.substring(0,34)}..."; - return Padding( padding: const EdgeInsets.symmetric(vertical: 1.0), child: Card( @@ -31,6 +29,7 @@ class UserDefinedItem extends StatelessWidget { MaterialPageRoute( builder: (context) => DetailPage( title: title, + datum: datum, description: description, image: image != null ? image! : null, ), @@ -58,7 +57,8 @@ class UserDefinedItem extends StatelessWidget { title, overflow: TextOverflow.ellipsis, style: const TextStyle( - fontSize: 20, // beliebige Schriftgröße + fontSize: 20, + fontWeight: FontWeight.bold// beliebige Schriftgröße ), ), ), @@ -72,14 +72,17 @@ class UserDefinedItem extends StatelessWidget { ), ), Padding( - padding: const EdgeInsets.all(8.0), - child: Text( - shortDescription, - style: const TextStyle( - fontSize: 18, // beliebige Schriftgröße + padding: const EdgeInsets.all(8.0), // feste Höhe für 2 Zeilen + child: Flexible( + child: Text( + description, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 15, + ), + ), ), ), - ), ], ), ), From e2444a4b1809c7c0324f2129a06468bb866985f5 Mon Sep 17 00:00:00 2001 From: Nicolas Gruber Date: Fri, 21 Apr 2023 19:06:59 +0200 Subject: [PATCH 4/5] 3 Zeilen description (max lines) --- lib/UserDefinedList.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/UserDefinedList.dart b/lib/UserDefinedList.dart index 330d00c..84f6964 100644 --- a/lib/UserDefinedList.dart +++ b/lib/UserDefinedList.dart @@ -39,8 +39,8 @@ class UserDefinedItem extends StatelessWidget { child: Row( children: [ SizedBox( - width: 130, - height: 130, + width: 120, + height: 120, child: image, ), Flexible( @@ -65,7 +65,7 @@ class UserDefinedItem extends StatelessWidget { Text( datum, style: const TextStyle( - fontSize: 16, // beliebige Schriftgröße + fontSize: 15, // beliebige Schriftgröße ), ), ], @@ -76,6 +76,7 @@ class UserDefinedItem extends StatelessWidget { child: Flexible( child: Text( description, + maxLines: 3, overflow: TextOverflow.ellipsis, style: const TextStyle( fontSize: 15, From 4d015e54fbd5f9155017d796a0d39e3fd442bb9c Mon Sep 17 00:00:00 2001 From: Nicolas Gruber Date: Wed, 26 Apr 2023 17:26:16 +0200 Subject: [PATCH 5/5] Flexible Exceptions behoben --- lib/AddPage.dart | 2 + lib/UserDefinedList.dart | 121 +++++++++++++++++++-------------------- 2 files changed, 61 insertions(+), 62 deletions(-) diff --git a/lib/AddPage.dart b/lib/AddPage.dart index 422d66d..dda1edf 100644 --- a/lib/AddPage.dart +++ b/lib/AddPage.dart @@ -4,6 +4,8 @@ import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; class AddScreen extends StatefulWidget { + const AddScreen({super.key}); + @override _AddScreenState createState() => _AddScreenState(); } diff --git a/lib/UserDefinedList.dart b/lib/UserDefinedList.dart index 84f6964..2299caa 100644 --- a/lib/UserDefinedList.dart +++ b/lib/UserDefinedList.dart @@ -18,77 +18,74 @@ class UserDefinedItem extends StatelessWidget { @override Widget build(BuildContext context) { - return Padding( - padding: const EdgeInsets.symmetric(vertical: 1.0), - child: Card( - child: InkWell( - onTap: () { - // Open a new screen when the user taps on the list item - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => DetailPage( - title: title, - datum: datum, - description: description, - image: image != null ? image! : null, - ), + return Card( + child: InkWell( + onTap: () { + // Open a new screen when the user taps on the list item + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DetailPage( + title: title, + datum: datum, + description: description, + image: image != null ? image! : null, ), - ); - }, - child: Row( - children: [ - SizedBox( - width: 120, - height: 120, - child: image, - ), - Flexible( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Flexible( - child: Text( - title, - overflow: TextOverflow.ellipsis, - style: const TextStyle( - fontSize: 20, - fontWeight: FontWeight.bold// beliebige Schriftgröße - ), - ), - ), - Text( - datum, - style: const TextStyle( - fontSize: 15, // beliebige Schriftgröße - ), - ), - ], - ), - ), - Padding( - padding: const EdgeInsets.all(8.0), // feste Höhe für 2 Zeilen - child: Flexible( + ), + ); + }, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: 120, + height: 120, + child: image, + ), + Flexible( + flex: 1, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Flexible( child: Text( - description, - maxLines: 3, + title, overflow: TextOverflow.ellipsis, style: const TextStyle( - fontSize: 15, + fontSize: 20, + fontWeight: FontWeight.bold// beliebige Schriftgröße ), ), ), + Text( + datum, + style: const TextStyle( + fontSize: 15, // beliebige Schriftgröße + ), + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), // feste Höhe für 2 Zeilen + child: Text( + description, + maxLines: 3, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 15, ), - ], - ), + ), + ), + ], ), - ], - ), + ), + ], ), ), );