diff --git a/veggieseasons/assets/icon/launcher_icon.png b/veggieseasons/assets/icon/launcher_icon.png new file mode 100644 index 000000000..13bc0d18b Binary files /dev/null and b/veggieseasons/assets/icon/launcher_icon.png differ diff --git a/veggieseasons/ios/Podfile.lock b/veggieseasons/ios/Podfile.lock index d18d9ad6e..38ab12b2d 100644 --- a/veggieseasons/ios/Podfile.lock +++ b/veggieseasons/ios/Podfile.lock @@ -14,9 +14,9 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/shared_preferences/ios" SPEC CHECKSUMS: - Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296 - shared_preferences: 5a1d487c427ee18fcd3ea1f2a131569481834b53 + Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a + shared_preferences: 1feebfa37bb57264736e16865e7ffae7fc99b523 PODFILE CHECKSUM: aff02bfeed411c636180d6812254b2daeea14d09 -COCOAPODS: 1.5.3 +COCOAPODS: 1.6.1 diff --git a/veggieseasons/ios/Runner.xcodeproj/project.pbxproj b/veggieseasons/ios/Runner.xcodeproj/project.pbxproj index 1cd780e93..4ba966cfc 100644 --- a/veggieseasons/ios/Runner.xcodeproj/project.pbxproj +++ b/veggieseasons/ios/Runner.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -41,9 +40,9 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; + 44D0F7D543E9A9D5B9AF94AC /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; @@ -57,6 +56,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BA0A9C772FFC1878911ECDBC /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -76,7 +76,6 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( - 2D5378251FAA1A9400D5DBA9 /* flutter_assets */, 3B80C3931E831B6300D905FE /* App.framework */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEBA1CF902C7004384FC /* Flutter.framework */, @@ -133,6 +132,8 @@ B83F3512278D995641099164 /* Pods */ = { isa = PBXGroup; children = ( + BA0A9C772FFC1878911ECDBC /* Pods-Runner.debug.xcconfig */, + 44D0F7D543E9A9D5B9AF94AC /* Pods-Runner.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -211,7 +212,6 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -225,7 +225,7 @@ files = ( ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", ); name = "[CP] Embed Pods Frameworks"; @@ -234,7 +234,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { @@ -437,8 +437,9 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = io.flutter.veggieseasons; + PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.VeggieSeasons; PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -460,8 +461,9 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = io.flutter.veggieseasons; + PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.VeggieSeasons; PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = 1; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; diff --git a/veggieseasons/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/veggieseasons/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/veggieseasons/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 3d43d11e6..e1ffad9da 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png index 28c6bf030..f247d07bf 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 2ccbfd967..8c603781b 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index f091b6b0b..bb6ee6fb2 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png index 4cde12118..6e7f2f544 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index d0ef06e7e..533dc55b3 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index dcdc2306c..44023c80d 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 2ccbfd967..8c603781b 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index c8f9ed8f5..4b9ad3332 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index a6d6b8609..5f4c3175a 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index a6d6b8609..5f4c3175a 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index 75b2d164a..369ef1882 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index c4df70d39..2074e6d1c 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 6a84f41e1..0f00aaa55 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index d0e1f5853..b0198d66d 100644 Binary files a/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/veggieseasons/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/veggieseasons/ios/Runner/Info.plist b/veggieseasons/ios/Runner/Info.plist index e104f89cd..db3889480 100644 --- a/veggieseasons/ios/Runner/Info.plist +++ b/veggieseasons/ios/Runner/Info.plist @@ -4,6 +4,8 @@ CFBundleDevelopmentRegion en + CFBundleDisplayName + Veg. Seasons CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -15,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) + 1.0 CFBundleSignature ???? CFBundleVersion @@ -29,8 +31,7 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortraitUpsideDown UISupportedInterfaceOrientations~ipad diff --git a/veggieseasons/lib/main.dart b/veggieseasons/lib/main.dart index aee296d14..943f438f4 100644 --- a/veggieseasons/lib/main.dart +++ b/veggieseasons/lib/main.dart @@ -22,6 +22,7 @@ void main() { child: ScopedModel( model: Preferences()..load(), child: CupertinoApp( + debugShowCheckedModeBanner: false, color: Styles.appBackground, home: HomeScreen(), ), diff --git a/veggieseasons/lib/screens/details.dart b/veggieseasons/lib/screens/details.dart index cfdb4641d..3ab654d55 100644 --- a/veggieseasons/lib/screens/details.dart +++ b/veggieseasons/lib/screens/details.dart @@ -73,12 +73,9 @@ class DetailsScreen extends StatelessWidget { Positioned( right: 0.0, left: 0.0, - child: Hero( - tag: veggie.id, - child: Image.asset( - veggie.imageAssetPath, - fit: BoxFit.cover, - ), + child: Image.asset( + veggie.imageAssetPath, + fit: BoxFit.cover, ), ), Positioned( diff --git a/veggieseasons/lib/screens/favorites.dart b/veggieseasons/lib/screens/favorites.dart index be40f733a..812159d69 100644 --- a/veggieseasons/lib/screens/favorites.dart +++ b/veggieseasons/lib/screens/favorites.dart @@ -48,9 +48,9 @@ class FavoritesScreen extends StatelessWidget { Widget build(BuildContext context) { return CupertinoTabView( builder: (context) { - return DecoratedBox( - decoration: BoxDecoration( - color: Styles.scaffoldBackground, + return CupertinoPageScaffold( + navigationBar: CupertinoNavigationBar( + middle: Text('My Garden'), ), child: Center( child: _buildTabViewBody(context), diff --git a/veggieseasons/lib/screens/list.dart b/veggieseasons/lib/screens/list.dart index e8ace4717..9efc72274 100644 --- a/veggieseasons/lib/screens/list.dart +++ b/veggieseasons/lib/screens/list.dart @@ -35,7 +35,7 @@ class ListScreen extends StatelessWidget { Widget build(BuildContext context) { return CupertinoTabView( builder: (context) { - String dateString = DateFormat.jms("en_US").format(DateTime.now()); + String dateString = DateFormat("MMMM y").format(DateTime.now()); final appState = ScopedModel.of(context, rebuildOnChange: true); final prefs = diff --git a/veggieseasons/lib/widgets/veggie_card.dart b/veggieseasons/lib/widgets/veggie_card.dart index 940f505e0..723bb67a3 100644 --- a/veggieseasons/lib/widgets/veggie_card.dart +++ b/veggieseasons/lib/widgets/veggie_card.dart @@ -7,6 +7,74 @@ import 'package:veggieseasons/data/veggie.dart'; import 'package:veggieseasons/screens/details.dart'; import 'package:veggieseasons/styles.dart'; +/// A Card-like Widget that responds to tap events by animating changes to its +/// elevation and invoking an optional [onPressed] callback. +class PressableCard extends StatefulWidget { + const PressableCard({ + @required this.child, + this.borderRadius = const BorderRadius.all(Radius.circular(10.0)), + this.upElevation = 2.0, + this.downElevation = 0.0, + this.shadowColor = CupertinoColors.black, + this.duration = const Duration(milliseconds: 100), + this.onPressed, + Key key, + }) : assert(child != null), + assert(borderRadius != null), + assert(upElevation != null), + assert(downElevation != null), + assert(shadowColor != null), + assert(duration != null), + super(key: key); + + final VoidCallback onPressed; + + final Widget child; + + final BorderRadius borderRadius; + + final double upElevation; + + final double downElevation; + + final Color shadowColor; + + final Duration duration; + + @override + _PressableCardState createState() => _PressableCardState(); +} + +class _PressableCardState extends State { + bool cardIsDown = false; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + setState(() => cardIsDown = false); + if (widget.onPressed != null) { + widget.onPressed(); + } + }, + onTapDown: (details) => setState(() => cardIsDown = true), + onTapCancel: () => setState(() => cardIsDown = false), + child: AnimatedPhysicalModel( + elevation: cardIsDown ? widget.downElevation : widget.upElevation, + borderRadius: widget.borderRadius, + shape: BoxShape.rectangle, + shadowColor: widget.shadowColor, + duration: widget.duration, + color: CupertinoColors.lightBackgroundGray, + child: ClipRRect( + borderRadius: widget.borderRadius, + child: widget.child, + ), + ), + ); + } +} + class VeggieCard extends StatelessWidget { VeggieCard(this.veggie, this.isPreferredCategory); @@ -16,61 +84,52 @@ class VeggieCard extends StatelessWidget { /// Whether [veggie] falls into one of user's preferred [VeggieCategory]s final bool isPreferredCategory; - List _buildStackChildren() { - final widgets = []; - - widgets.add(Hero( - tag: veggie.id, - child: Image.asset( - veggie.imageAssetPath, - fit: BoxFit.cover, + Widget _buildDetails() { + return DecoratedBox( + decoration: BoxDecoration( + color: veggie.accentColor, ), - )); - - widgets.add(Positioned( - bottom: 0.0, - left: 0.0, - right: 0.0, - child: DecoratedBox( - decoration: BoxDecoration( - color: veggie.accentColor, - ), - child: Padding( - padding: const EdgeInsets.all(16.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - veggie.name, - style: Styles.cardTitleText, - ), - Text( - veggie.shortDescription, - style: Styles.cardDescriptionText, - ), - ], - ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + veggie.name, + style: Styles.cardTitleText, + ), + Text( + veggie.shortDescription, + style: Styles.cardDescriptionText, + ), + ], ), ), - )); - - return widgets; + ); } @override Widget build(BuildContext context) { - return GestureDetector( - onTap: () { + return PressableCard( + onPressed: () { Navigator.of(context).push(CupertinoPageRoute( builder: (context) => DetailsScreen(veggie.id), fullscreenDialog: true, )); }, - child: ClipRRect( - borderRadius: BorderRadius.circular(10.0), - child: Stack( - children: _buildStackChildren(), - ), + child: Stack( + children: [ + Image.asset( + veggie.imageAssetPath, + fit: BoxFit.cover, + ), + Positioned( + bottom: 0.0, + left: 0.0, + right: 0.0, + child: _buildDetails(), + ), + ], ), ); } diff --git a/veggieseasons/pubspec.yaml b/veggieseasons/pubspec.yaml index d620b342a..64aa48a5e 100644 --- a/veggieseasons/pubspec.yaml +++ b/veggieseasons/pubspec.yaml @@ -19,6 +19,8 @@ dev_dependencies: flutter_test: sdk: flutter + flutter_launcher_icons: ^0.7.0 + flutter: assets: @@ -66,3 +68,7 @@ flutter: - asset: assets/fonts/NotoSans-Italic.ttf style: italic weight: 400 + +flutter_icons: + ios: true + image_path: "assets/icon/launcher_icon.png"