diff --git a/mdc_100_series/.gitignore b/mdc_100_series/.gitignore index ad302c8f8..0db46d25c 100644 --- a/mdc_100_series/.gitignore +++ b/mdc_100_series/.gitignore @@ -30,6 +30,7 @@ .pub-cache/ .pub/ /build/ +pubspec.lock # Web related lib/generated_plugin_registrant.dart diff --git a/mdc_100_series/analysis_options.yaml b/mdc_100_series/analysis_options.yaml new file mode 100644 index 000000000..a3be6b826 --- /dev/null +++ b/mdc_100_series/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml \ No newline at end of file diff --git a/mdc_100_series/lib/app.dart b/mdc_100_series/lib/app.dart index a539966f4..cdf90b2bd 100644 --- a/mdc_100_series/lib/app.dart +++ b/mdc_100_series/lib/app.dart @@ -19,13 +19,14 @@ import 'login.dart'; // TODO: Convert ShrineApp to stateful widget (104) class ShrineApp extends StatelessWidget { - + const ShrineApp({Key? key}) : super(key: key); + @override Widget build(BuildContext context) { return MaterialApp( title: 'Shrine', // TODO: Change home: to a Backdrop with a HomePage frontLayer (104) - home: HomePage(), + home: const HomePage(), // TODO: Make currentCategory field take _currentCategory (104) // TODO: Pass _currentCategory for frontLayer (104) // TODO: Change backLayer field value to CategoryMenuPage (104) @@ -42,7 +43,7 @@ class ShrineApp extends StatelessWidget { return MaterialPageRoute( settings: settings, - builder: (BuildContext context) => LoginPage(), + builder: (BuildContext context) => const LoginPage(), fullscreenDialog: true, ); } diff --git a/mdc_100_series/lib/home.dart b/mdc_100_series/lib/home.dart index f2d637ec3..51c4dfa86 100644 --- a/mdc_100_series/lib/home.dart +++ b/mdc_100_series/lib/home.dart @@ -15,13 +15,15 @@ import 'package:flutter/material.dart'; class HomePage extends StatelessWidget { + const HomePage({Key? key}) : super(key: key); + // TODO: Make a collection of cards (102) // TODO: Add a variable for Category (104) @override Widget build(BuildContext context) { // TODO: Return an AsymmetricView (104) // TODO: Pass Category variable to AsymmetricView (104) - return Scaffold( + return const Scaffold( // TODO: Add app bar (102) // TODO: Add a grid view (102) body: Center( diff --git a/mdc_100_series/lib/login.dart b/mdc_100_series/lib/login.dart index 4b104c906..80183c67c 100644 --- a/mdc_100_series/lib/login.dart +++ b/mdc_100_series/lib/login.dart @@ -15,6 +15,8 @@ import 'package:flutter/material.dart'; class LoginPage extends StatefulWidget { + const LoginPage({Key? key}) : super(key: key); + @override _LoginPageState createState() => _LoginPageState(); } @@ -26,17 +28,17 @@ class _LoginPageState extends State { return Scaffold( body: SafeArea( child: ListView( - padding: EdgeInsets.symmetric(horizontal: 24.0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), children: [ - SizedBox(height: 80.0), + const SizedBox(height: 80.0), Column( children: [ Image.asset('assets/diamond.png'), - SizedBox(height: 16.0), - Text('SHRINE'), + const SizedBox(height: 16.0), + const Text('SHRINE'), ], ), - SizedBox(height: 120.0), + const SizedBox(height: 120.0), // TODO: Wrap Username with AccentColorOverride (103) // TODO: Remove filled: true values (103) // TODO: Wrap Password with AccentColorOverride (103) diff --git a/mdc_100_series/lib/main.dart b/mdc_100_series/lib/main.dart index f79ef41b9..64084b4b5 100644 --- a/mdc_100_series/lib/main.dart +++ b/mdc_100_series/lib/main.dart @@ -14,6 +14,6 @@ import 'package:flutter/material.dart'; -import 'package:Shrine/app.dart'; +import 'app.dart'; -void main() => runApp(ShrineApp()); +void main() => runApp(const ShrineApp()); diff --git a/mdc_100_series/lib/supplemental/asymmetric_view.dart b/mdc_100_series/lib/supplemental/asymmetric_view.dart index 39895e9eb..5be499e17 100644 --- a/mdc_100_series/lib/supplemental/asymmetric_view.dart +++ b/mdc_100_series/lib/supplemental/asymmetric_view.dart @@ -20,9 +20,9 @@ import 'product_columns.dart'; class AsymmetricView extends StatelessWidget { final List products; - AsymmetricView({Key? key, required this.products}); + const AsymmetricView({Key? key, required this.products}) : super(key: key); - List _buildColumns(BuildContext context) { + List _buildColumns(BuildContext context) { if (products.isEmpty) { return []; } @@ -53,10 +53,10 @@ class AsymmetricView extends StatelessWidget { product: products[_oddCasesIndex(index)], ); } - return Container( + return SizedBox( width: width, child: Padding( - padding: EdgeInsets.symmetric(horizontal: 16.0), + padding: const EdgeInsets.symmetric(horizontal: 16.0), child: column, ), ); @@ -88,7 +88,7 @@ class AsymmetricView extends StatelessWidget { Widget build(BuildContext context) { return ListView( scrollDirection: Axis.horizontal, - padding: EdgeInsets.fromLTRB(0.0, 34.0, 16.0, 44.0), + padding: const EdgeInsets.fromLTRB(0.0, 34.0, 16.0, 44.0), children: _buildColumns(context), ); } diff --git a/mdc_100_series/lib/supplemental/cut_corners_border.dart b/mdc_100_series/lib/supplemental/cut_corners_border.dart index 097930252..2e8393573 100644 --- a/mdc_100_series/lib/supplemental/cut_corners_border.dart +++ b/mdc_100_series/lib/supplemental/cut_corners_border.dart @@ -104,8 +104,8 @@ class CutCornersBorder extends OutlineInputBorder { Canvas canvas, Rect rect, { double? gapStart, - double gapExtent: 0.0, - double gapPercentage: 0.0, + double gapExtent = 0.0, + double gapPercentage = 0.0, TextDirection? textDirection, }) { assert(gapPercentage >= 0.0 && gapPercentage <= 1.0); diff --git a/mdc_100_series/lib/supplemental/product_card.dart b/mdc_100_series/lib/supplemental/product_card.dart index a8ebbc420..914d7f8eb 100644 --- a/mdc_100_series/lib/supplemental/product_card.dart +++ b/mdc_100_series/lib/supplemental/product_card.dart @@ -18,13 +18,15 @@ import 'package:intl/intl.dart'; import '../model/product.dart'; class ProductCard extends StatelessWidget { - ProductCard({this.imageAspectRatio = 33 / 49, required this.product}) - : assert(imageAspectRatio > 0); + const ProductCard( + {this.imageAspectRatio = 33 / 49, required this.product, Key? key}) + : assert(imageAspectRatio > 0), + super(key: key); final double imageAspectRatio; final Product product; - static final kTextBoxHeight = 65.0; + static const kTextBoxHeight = 65.0; @override Widget build(BuildContext context) { @@ -60,7 +62,7 @@ class ProductCard extends StatelessWidget { overflow: TextOverflow.ellipsis, maxLines: 1, ), - SizedBox(height: 4.0), + const SizedBox(height: 4.0), Text( formatter.format(product.price), style: theme.textTheme.subtitle2, diff --git a/mdc_100_series/lib/supplemental/product_columns.dart b/mdc_100_series/lib/supplemental/product_columns.dart index 29351328b..c9a933d33 100644 --- a/mdc_100_series/lib/supplemental/product_columns.dart +++ b/mdc_100_series/lib/supplemental/product_columns.dart @@ -18,10 +18,11 @@ import '../model/product.dart'; import 'product_card.dart'; class TwoProductCardColumn extends StatelessWidget { - TwoProductCardColumn({ + const TwoProductCardColumn({ required this.bottom, this.top, - }); + Key? key, + }) : super(key: key); final Product bottom; final Product? top; @@ -43,7 +44,7 @@ class TwoProductCardColumn extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Padding( - padding: EdgeInsetsDirectional.only(start: 28.0), + padding: const EdgeInsetsDirectional.only(start: 28.0), child: top != null ? ProductCard( imageAspectRatio: imageAspectRatio, @@ -53,9 +54,9 @@ class TwoProductCardColumn extends StatelessWidget { height: heightOfCards, ), ), - SizedBox(height: spacerHeight), + const SizedBox(height: spacerHeight), Padding( - padding: EdgeInsetsDirectional.only(end: 28.0), + padding: const EdgeInsetsDirectional.only(end: 28.0), child: ProductCard( imageAspectRatio: imageAspectRatio, product: bottom, @@ -68,7 +69,8 @@ class TwoProductCardColumn extends StatelessWidget { } class OneProductCardColumn extends StatelessWidget { - OneProductCardColumn({required this.product}); + const OneProductCardColumn({required this.product, Key? key}) + : super(key: key); final Product product; @@ -81,7 +83,7 @@ class OneProductCardColumn extends StatelessWidget { ProductCard( product: product, ), - SizedBox( + const SizedBox( height: 40.0, ), ], diff --git a/mdc_100_series/pubspec.yaml b/mdc_100_series/pubspec.yaml index af9291ca8..a2b5d7035 100644 --- a/mdc_100_series/pubspec.yaml +++ b/mdc_100_series/pubspec.yaml @@ -1,4 +1,4 @@ -name: Shrine +name: shrine description: Learn the basics of using Material Components by building a simple app with core components. environment: @@ -15,6 +15,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + flutter_lints: ^1.0.0 flutter: # TODO: Insert Fonts (103)