Last active
May 12, 2020 10:14
-
-
Save rafdls/e9f90f17af3feafd87208788f4e940c5 to your computer and use it in GitHub Desktop.
Revisions
-
rafdls revised this gist
May 12, 2020 . 1 changed file with 17 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,17 @@ { "version": "0.2.0", "configurations": [ { "name": "Dog Match Dev", "request": "launch", "type": "dart", "program": "lib/main_dev.dart", }, { "name": "Dog Match Prod", "request": "launch", "type": "dart", "program": "lib/main_prod.dart", } ] } -
rafdls revised this gist
May 12, 2020 . 1 changed file with 71 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,71 @@ import 'package:flutter/material.dart'; import 'package:flutter_flavors/config/app_config.dart'; import 'package:flutter_flavors/widgets/dog_stack.dart'; import 'package:flutter_flavors/widgets/generic_button.dart'; import 'package:flutter_flavors/widgets/generic_loading_spinner.dart'; class DogApp extends StatefulWidget { DogApp(this.appConfig); final AppConfig appConfig; @override _DogAppState createState() => _DogAppState(appConfig); } class _DogAppState extends State<DogApp> { _DogAppState(this.appConfig); final AppConfig appConfig; @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( primarySwatch: appConfig.colorSwatch, backgroundColor: Theme.of(context).backgroundColor, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: Scaffold( appBar: AppBar( title: Text(appConfig.appName), centerTitle: true, ), body: Stack( children: <Widget>[ Center( child: GenericButton( child: Text('More dogs!'), onPressed: _refreshDogImages, ), ), Container( color: Theme.of(context).canvasColor, child: FutureBuilder( key: UniqueKey(), future: appConfig.dogRepository.getDogImages(count: 10), builder: (context, snapshot) { final dogImages = snapshot.data as List<ImageProvider>; if (snapshot.hasData) { return DogStack(images: dogImages); } else if (snapshot.hasError) { return Center(child: Text('There is an error in dog server')); } else { return Center( child: Container(child: GenericLoadingSpinner()), ); } }, ), ), ], ), ), debugShowCheckedModeBanner: false, ); } void _refreshDogImages() { setState(() {}); } } -
rafdls revised this gist
May 12, 2020 . 3 changed files with 30 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,5 @@ import 'package:flutter/material.dart'; abstract class DogRepository { Future<List<ImageProvider>> getDogImages({int count}); } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_flavors/repository/dog_repository.dart'; class DogRepositoryDev implements DogRepository { @override Future<List<ImageProvider>> getDogImages({int count = 1}) { return Future.value(List.generate(count, (_) => AssetImage('assets/dog.jpg'))); } } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,16 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_flavors/repository/dog_repository.dart'; import 'package:http/http.dart' as http; class DogRepositoryProd implements DogRepository { @override Future<List<ImageProvider>> getDogImages({int count = 1}) async { final response = await http.get('https://dog.ceo/api/breeds/image/random/$count'); final List<ImageProvider> images = (json.decode(response.body)['message'] as List).map((dogUrl) => NetworkImage(dogUrl)).toList(); return Future.value(images); } } -
rafdls revised this gist
May 12, 2020 . 3 changed files with 44 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_flavors/repository/dog_repository.dart'; abstract class AppConfig { String get appName; DogRepository get dogRepository; ColorSwatch get colorSwatch; } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_flavors/config/app_config.dart'; import 'package:flutter_flavors/repository/dog_repository.dart'; import 'package:flutter_flavors/repository/dog_repository_dev.dart'; class AppConfigDev implements AppConfig { final _dogRepository = DogRepositoryDev(); final _appName = "(DEV) Dog Match"; @override String get appName => _appName; @override DogRepository get dogRepository => _dogRepository; @override ColorSwatch get colorSwatch => Colors.orange; } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,18 @@ import 'package:flutter/material.dart'; import 'package:flutter_flavors/config/app_config.dart'; import 'package:flutter_flavors/repository/dog_repository.dart'; import 'package:flutter_flavors/repository/dog_repository_prod.dart'; class AppConfigProd implements AppConfig { final _dogRepository = DogRepositoryProd(); final _appName = "Dog Match"; @override String get appName => _appName; @override DogRepository get dogRepository => _dogRepository; @override ColorSwatch get colorSwatch => Colors.deepPurple; } -
rafdls created this gist
May 12, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_flavors/config/app_config.dart'; import 'package:flutter_flavors/dog_app.dart'; void mainCommon(AppConfig appConfig) { runApp(DogApp( appConfig, )); } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,8 @@ import 'package:flutter_flavors/config/app_config.dart'; import 'package:flutter_flavors/config/app_config_dev.dart'; import 'package:flutter_flavors/main_common.dart'; void main() { final AppConfig appConfig = AppConfigDev(); mainCommon(appConfig); } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,8 @@ import 'package:flutter_flavors/config/app_config.dart'; import 'package:flutter_flavors/config/app_config_prod.dart'; import 'package:flutter_flavors/main_common.dart'; void main() { final AppConfig appConfig = AppConfigProd(); mainCommon(appConfig); }