diff --git a/.github/workflows/build-deploy.yml b/.github/workflows/build-deploy.yml index e6373d0..af40785 100644 --- a/.github/workflows/build-deploy.yml +++ b/.github/workflows/build-deploy.yml @@ -20,7 +20,7 @@ jobs: - name: Install Flutter uses: subosito/flutter-action@v1 with: - flutter-version: '3.13.2' + flutter-version: '3.24.1' - name: Get dependencies run: flutter pub get diff --git a/.metadata b/.metadata index 5afcb10..bd14d1f 100644 --- a/.metadata +++ b/.metadata @@ -4,8 +4,8 @@ # This file should be version controlled and should not be manually edited. version: - revision: "7e07cd41cb78c1bb1199c458859c87ff818e1748" - channel: "beta" + revision: "5874a72aa4c779a02553007c47dacbefba2374dc" + channel: "stable" project_type: app @@ -13,26 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - - platform: android - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - - platform: ios - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - - platform: linux - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - - platform: macos - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc - platform: web - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - - platform: windows - create_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 - base_revision: 7e07cd41cb78c1bb1199c458859c87ff818e1748 + create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc + base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc # User provided section diff --git a/assets/img/album.jpg b/assets/img/album.jpg new file mode 100644 index 0000000..9f8c9cc Binary files /dev/null and b/assets/img/album.jpg differ diff --git a/lib/album/album.dart b/lib/album/album.dart new file mode 100644 index 0000000..ef7f570 --- /dev/null +++ b/lib/album/album.dart @@ -0,0 +1,127 @@ +import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; +import 'package:spider_water/album/album_description.dart'; + +import '../analytics/analytics.dart'; + +class AlbumPage extends StatefulWidget { + const AlbumPage({super.key}); + + @override + State createState() { + return _AlbumPageState(); + } +} + +const style = TextStyle( + color: Colors.black, + fontSize: 14, + fontFamily: 'Blockstepped', +); + +const styleh1 = TextStyle( + color: Colors.black, + fontSize: 28, + fontFamily: 'Blockstepped', +); + +const styleh2 = TextStyle( + color: Colors.black, + fontSize: 24, + fontFamily: 'Blockstepped', +); + +const styleh3 = TextStyle( + color: Colors.black, + fontSize: 20, + fontFamily: 'Blockstepped', +); + +class _AlbumPageState extends State { + final analytics = + SpiderAnalytics(firebaseInstance: FirebaseAnalytics.instance); + + @override + void didChangeDependencies() { + loadImages(); + super.didChangeDependencies(); + } + + @override + Widget build(BuildContext context) { + double screenWidth = MediaQuery.of(context).size.width; + double screenHeight = MediaQuery.of(context).size.height; + + analytics.sendEvent(const AnalyticsEvent(name: "Loaded album page")); + + return screenWidth < 450 + ? mobilePage(screenHeight) + : desktopPage(screenHeight, screenWidth); + } + + Future loadImages() async { + try { + await precacheImage(const AssetImage('assets/img/album.jpg'), context); + } catch (e) { + debugPrint('Failed to load and cache image: $e'); + } + } + + mobilePage(double screenHeight) { + return SingleChildScrollView( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + IntrinsicWidth( + child: Image.asset( + 'assets/img/album.jpg', + height: screenHeight / 2, + )), + const AlbumBody(), + ], + ), + ); + } + + desktopPage(double screenHeight, double screenWidth) { + return SingleChildScrollView( + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + IntrinsicHeight( + child: Image.asset( + 'assets/img/album.jpg', + width: screenWidth / 3, + )), + const AlbumBody(), + ], + ), + ); + } +} + +class AlbumBody extends StatelessWidget { + const AlbumBody({super.key}); + + @override + Widget build(BuildContext context) { + double screenWidth = MediaQuery.of(context).size.width; + return SizedBox( + height: screenWidth < 450 ? 800 : screenWidth * .45, + width: screenWidth < 450 ? 800 : screenWidth * .45, + child: Markdown( + data: description, + styleSheet: MarkdownStyleSheet( + a: style, + h1: styleh1, + h2: styleh2, + h3: styleh3, + h4: style, + p: style), + )); + } +} diff --git a/lib/album/album_description.dart b/lib/album/album_description.dart new file mode 100644 index 0000000..47a2d28 --- /dev/null +++ b/lib/album/album_description.dart @@ -0,0 +1,20 @@ +const String description = """ + +# akin to the feeling of washing your hands of soot + +similar to the feeling of wiping sweat onto a fully soaked cotton tee shirt + +spider water is the collective effort of post-millennial hyperbolization + +it is the result of stories without endings told to friends of friends + +pints downed in the arriving minutes of an uber driver + +## we're ready to finally share that story + +Spider Water is a 6-track guide for survival in a world where the silhouette lounge only has one shadow +a world where brat politicians corrupt the masses through major chord progressions + +### break free from the plan. September 22 + +"""; \ No newline at end of file diff --git a/lib/home/shows.dart b/lib/home/shows.dart index 7075d4d..9c5a938 100644 --- a/lib/home/shows.dart +++ b/lib/home/shows.dart @@ -50,4 +50,8 @@ final ShowList = [ url: "https://pawtucketartscollaborative.wildapricot.org/", title: "PAWTUCKET ART GALLERY", date: DateTime(2023, 12, 9, 19)), + Show( + url: "https://regenttheatre.com/", + title: "ALBUM RELEASE SHOW @ REGENT", + date: DateTime(2024, 10, 12, 19)), ]; diff --git a/lib/main.dart b/lib/main.dart index 11f3b68..dae1a7a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:flutter/material.dart'; import 'package:spider_water/analytics/analytics.dart'; import 'package:spider_water/energy/energy.dart'; +import 'album/album.dart'; import 'analytics/firebase_options.dart'; import 'home/face.dart'; import 'home/home_page_content.dart'; @@ -91,7 +92,7 @@ class _MyHomePageState extends State { ), ), home: DefaultTabController( - length: 2, + length: 3, child: Scaffold( backgroundColor: Colors.white, appBar: AppBar( @@ -111,6 +112,9 @@ class _MyHomePageState extends State { ), Tab( text: "energy", + ), + Tab( + text: "album", ) ]), ), @@ -118,6 +122,7 @@ class _MyHomePageState extends State { body: TabBarView(children: [ HomePageContent(faceIndex: widget.faceIndex), const EnergyViews(), + const AlbumPage(), ]), )), ); diff --git a/pubspec.lock b/pubspec.lock index 397fbfd..423ad23 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.2.2" + args: + dependency: transitive + description: + name: args + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + url: "https://pub.dev" + source: hosted + version: "2.5.0" async: dependency: transitive description: @@ -61,10 +69,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" crypto: dependency: transitive description: @@ -166,6 +174,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.3" + flutter_markdown: + dependency: "direct main" + description: + name: flutter_markdown + sha256: a23c41ee57573e62fc2190a1f36a0480c4d90bde3a8a8d7126e5d5992fb53fb7 + url: "https://pub.dev" + source: hosted + version: "0.7.3+1" flutter_test: dependency: "direct dev" description: flutter @@ -232,6 +248,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.8" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + url: "https://pub.dev" + source: hosted + version: "10.0.5" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + url: "https://pub.dev" + source: hosted + version: "3.0.5" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" lints: dependency: transitive description: @@ -240,38 +280,46 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + markdown: + dependency: transitive + description: + name: markdown + sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051 + url: "https://pub.dev" + source: hosted + version: "7.2.2" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.15.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: transitive description: @@ -361,18 +409,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -393,10 +441,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.7.2" typed_data: dependency: transitive description: @@ -485,14 +533,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - web: + vm_service: dependency: transitive description: - name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 + name: vm_service + sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" url: "https://pub.dev" source: hosted - version: "0.1.4-beta" + version: "14.2.5" win32: dependency: transitive description: @@ -510,5 +558,5 @@ packages: source: hosted version: "1.0.3" sdks: - dart: ">=3.1.0 <4.0.0" - flutter: ">=3.13.0" + dart: ">=3.5.1 <4.0.0" + flutter: ">=3.19.0" diff --git a/pubspec.yaml b/pubspec.yaml index 4d14756..e60c290 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,10 +2,10 @@ name: spider_water description: synth rock for debutants publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 1.0.0+1 +version: 1.0.0+2 environment: - sdk: '>=3.1.0-262.3.beta <4.0.0' + sdk: '>=3.5.1 <4.0.0' dependencies: flutter: @@ -18,6 +18,7 @@ dependencies: cupertino_icons: ^1.0.2 firebase_analytics: ^10.4.5 firebase_core: ^2.15.1 + flutter_markdown: ^0.7.3 dev_dependencies: flutter_test: @@ -38,6 +39,7 @@ flutter: - assets/img/emma.png - assets/img/stin.png - assets/img/chuck.png + - assets/img/album.jpg fonts: - family: Blockstepped fonts: