mc_gallery/doc/api/index.html

572 lines
24 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no">
<meta name="generator" content="made with love by dartdoc 6.0.0">
<meta name="description" content="mc_gallery API docs, for the Dart programming language.">
<title>mc_gallery - Dart API docs</title>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,700;1,400&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="static-assets/github.css?v1">
<link rel="stylesheet" href="static-assets/styles.css?v1">
<link rel="icon" href="static-assets/favicon.png?v1">
</head>
<body data-base-href="" data-using-base-href="false">
<div id="overlay-under-drawer"></div>
<header id="title">
<button id="sidenav-left-toggle" type="button">&nbsp;</button>
<ol class="breadcrumbs gt-separated dark hidden-xs">
<li class="self-crumb">mc_gallery package</li>
</ol>
<div class="self-name">mc_gallery</div>
<form class="search navbar-right" role="search">
<input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
</form>
</header>
<main>
<div id="dartdoc-main-content" class="main-content">
<section class="desc markdown">
<h1 id="mc_gallery">mc_gallery</h1>
<h2 id="dart-docs-explanation">Dart docs explanation</h2>
<p>The first line of docs are like normal Dart docs. The second line is less of a 'further'
explanation, and more of an active commentary for the viewer.</p>
<h2 id="emulation">Emulation</h2>
<h3 id="main-api">Main API</h3>
<p>The unsplash_images_api contains code for fetching data from an external website. Since I have used 'source.unsplash.com', there is no actual daa
data (in the form of protected URLs or raw JSON like Facebook API) that is sent back. So this base URL can directly be used to cache the images.<br></p>
<p>But I wanted to give a more realistic procedure. So, I manually serialize the same data about the URL to JSON and then deserialize it, just a step
further on needlessly. In addition to it, constant fetch delays have added in as well. But in theory, the first serialization can be replaced by actual data-fetch,
while the rest works as expected</p>
<h3 id="search-api">Search API</h3>
<p>Since websites also have a server-side search call that is available, functionality had been included to make use of that too. But again, this is mocked
by the steps mentioned above.</p>
<h2 id="maintaining-scope">Maintaining scope</h2>
<p>Since it's just a demo assignment, I have tried to keep the scope of the functionalities small. By that, I mean I have not fully optimized performance-critical sections,
or fixed some rare-case bugs. But instead I have left either a 'todo' for them, or mentioned that in the docs themselves</p>
<h2 id="extra-quirks">Extra quirks</h2>
<p>A lot of the empty directories and unused asset files are left in, as I used my project templated from my other templates. I decided to leave them in, in any case since they
may give a better indication about how I code, should you choose to look into them. A lot of the functionality that I used, is something that I have already made for my previous project(s),
so it was not as much work as it seems. One of my recent ones, (luckily) literally had a Gallery feature as well, for congregating social media posts into one place. So a lot of assets were reused from there.</p>
<p>Some of the extra quirks that I added in are:</p>
<ol>
<li>Dark mode support.</li>
<li>Live search -&gt; both for locally (cached) image files, and Web (using a website's search API).</li>
<li>Clearing image cache on app going to background, and then restarting the program (way easier on an emulator using hot restart).
<ul>
<li>I found it easier to directly use the change in app life cycle, than implement a pull-down-refresh.</li>
</ul>
</li>
<li>Logging.</li>
<li>Local storage of favourites state -&gt; on restart, the favourites stay.
<ul>
<li>Not very useful on a real device as app restart can only be triggered with app life cycle state change, which would clear the download cache,
which would be an invalidate them -&gt; so clearing them away with the image cache for now.</li>
</ul>
</li>
<li>Web API unit test</li>
</ol>
</section>
<section class="summary">
<h2>Libraries</h2>
<dl>
<dt id="animated_column">
<span class="name"><a href="features_core_widgets_animated_column/features_core_widgets_animated_column-library.html">animated_column</a></span>
</dt>
<dd>
</dd>
<dt id="app">
<span class="name"><a href="app/app-library.html">app</a></span>
</dt>
<dd>
</dd>
<dt id="app_lifecycle_service">
<span class="name"><a href="features_core_services_app_lifecycle_service/features_core_services_app_lifecycle_service-library.html">app_lifecycle_service</a></span>
</dt>
<dd>
</dd>
<dt id="app_router">
<span class="name"><a href="features_core_abstracts_router_app_router/features_core_abstracts_router_app_router-library.html">app_router</a></span>
</dt>
<dd>
</dd>
<dt id="app_setup">
<span class="name"><a href="features_core_abstracts_app_setup/features_core_abstracts_app_setup-library.html">app_setup</a></span>
</dt>
<dd>
</dd>
<dt id="base_view_model">
<span class="name"><a href="features_core_abstracts_base_view_model/features_core_abstracts_base_view_model-library.html">base_view_model</a></span>
</dt>
<dd>
</dd>
<dt id="connections_service">
<span class="name"><a href="features_core_services_connections_service/features_core_services_connections_service-library.html">connections_service</a></span>
</dt>
<dd>
</dd>
<dt id="const_colors">
<span class="name"><a href="features_core_data_constants_const_colors/features_core_data_constants_const_colors-library.html">const_colors</a></span>
</dt>
<dd>
</dd>
<dt id="const_durations">
<span class="name"><a href="features_core_data_constants_const_durations/features_core_data_constants_const_durations-library.html">const_durations</a></span>
</dt>
<dd>
</dd>
<dt id="const_input_formatters">
<span class="name"><a href="features_core_data_constants_const_input_formatters/features_core_data_constants_const_input_formatters-library.html">const_input_formatters</a></span>
</dt>
<dd>
</dd>
<dt id="const_input_validators">
<span class="name"><a href="features_core_data_constants_const_input_validators/features_core_data_constants_const_input_validators-library.html">const_input_validators</a></span>
</dt>
<dd>
</dd>
<dt id="const_media">
<span class="name"><a href="features_core_data_constants_const_media/features_core_data_constants_const_media-library.html">const_media</a></span>
</dt>
<dd>
</dd>
<dt id="const_sorters">
<span class="name"><a href="features_core_data_constants_const_sorters/features_core_data_constants_const_sorters-library.html">const_sorters</a></span>
</dt>
<dd>
</dd>
<dt id="const_text">
<span class="name"><a href="features_core_data_constants_const_text/features_core_data_constants_const_text-library.html">const_text</a></span>
</dt>
<dd>
</dd>
<dt id="const_values">
<span class="name"><a href="features_core_data_constants_const_values/features_core_data_constants_const_values-library.html">const_values</a></span>
</dt>
<dd>
</dd>
<dt id="context_extensions">
<span class="name"><a href="features_core_data_extensions_context_extensions/features_core_data_extensions_context_extensions-library.html">context_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="custom_wrap">
<span class="name"><a href="features_home_widgets_custom_wrap/features_home_widgets_custom_wrap-library.html">custom_wrap</a></span>
</dt>
<dd>
</dd>
<dt id="dio_extensions">
<span class="name"><a href="features_core_data_extensions_dio_extensions/features_core_data_extensions_dio_extensions-library.html">dio_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="error_page_view">
<span class="name"><a href="features_core_views_error_page_view/features_core_views_error_page_view-library.html">error_page_view</a></span>
</dt>
<dd>
</dd>
<dt id="gallery_view">
<span class="name"><a href="features_home_views_gallery_gallery_view/features_home_views_gallery_gallery_view-library.html">gallery_view</a></span>
</dt>
<dd>
</dd>
<dt id="gallery_view_model">
<span class="name"><a href="features_home_views_gallery_gallery_view_model/features_home_views_gallery_gallery_view_model-library.html">gallery_view_model</a></span>
</dt>
<dd>
</dd>
<dt id="gap">
<span class="name"><a href="features_core_widgets_gap/features_core_widgets_gap-library.html">gap</a></span>
</dt>
<dd>
</dd>
<dt id="image_cache_manager_service">
<span class="name"><a href="features_home_services_image_cache_manager_service/features_home_services_image_cache_manager_service-library.html">image_cache_manager_service</a></span>
</dt>
<dd>
</dd>
<dt id="image_carousel_view">
<span class="name"><a href="features_home_views_image_carousel_image_carousel_view/features_home_views_image_carousel_image_carousel_view-library.html">image_carousel_view</a></span>
</dt>
<dd>
</dd>
<dt id="image_carousel_view_model">
<span class="name"><a href="features_home_views_image_carousel_image_carousel_view_model/features_home_views_image_carousel_image_carousel_view_model-library.html">image_carousel_view_model</a></span>
</dt>
<dd>
</dd>
<dt id="image_model">
<span class="name"><a href="features_home_data_models_image_model/features_home_data_models_image_model-library.html">image_model</a></span>
</dt>
<dd>
</dd>
<dt id="image_model_dto">
<span class="name"><a href="features_home_data_dtos_image_model_dto/features_home_data_dtos_image_model_dto-library.html">image_model_dto</a></span>
</dt>
<dd>
</dd>
<dt id="images_api">
<span class="name"><a href="features_home_abstracts_images_api/features_home_abstracts_images_api-library.html">images_api</a></span>
</dt>
<dd>
</dd>
<dt id="images_service">
<span class="name"><a href="features_home_services_images_service/features_home_services_images_service-library.html">images_service</a></span>
</dt>
<dd>
</dd>
<dt id="iterable_extensions">
<span class="name"><a href="features_core_data_extensions_iterable_extensions/features_core_data_extensions_iterable_extensions-library.html">iterable_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="l10n">
<span class="name"><a href="l10n_generated_l10n/l10n_generated_l10n-library.html">l10n</a></span>
</dt>
<dd>
</dd>
<dt id="list_extensions">
<span class="name"><a href="features_core_data_extensions_list_extensions/features_core_data_extensions_list_extensions-library.html">list_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="local_storage_service">
<span class="name"><a href="features_core_services_local_storage_service/features_core_services_local_storage_service-library.html">local_storage_service</a></span>
</dt>
<dd>
</dd>
<dt id="locator">
<span class="name"><a href="locator/locator-library.html">locator</a></span>
</dt>
<dd>
</dd>
<dt id="logging_service">
<span class="name"><a href="features_core_services_logging_service/features_core_services_logging_service-library.html">logging_service</a></span>
</dt>
<dd>
</dd>
<dt id="main">
<span class="name"><a href="main/main-library.html">main</a></span>
</dt>
<dd>
</dd>
<dt id="map_extensions">
<span class="name"><a href="features_core_data_extensions_map_extensions/features_core_data_extensions_map_extensions-library.html">map_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="mcg_scaffold">
<span class="name"><a href="features_core_widgets_mcg_scaffold/features_core_widgets_mcg_scaffold-library.html">mcg_scaffold</a></span>
</dt>
<dd>
</dd>
<dt id="messages_all">
<span class="name"><a href="l10n_generated_intl_messages_all/l10n_generated_intl_messages_all-library.html">messages_all</a></span>
</dt>
<dd>
</dd>
<dt id="messages_en">
<span class="name"><a href="l10n_generated_intl_messages_en/l10n_generated_intl_messages_en-library.html">messages_en</a></span>
</dt>
<dd>
</dd>
<dt id="multi_value_listenable_builder">
<span class="name"><a href="features_core_widgets_state_multi_value_listenable_builder/features_core_widgets_state_multi_value_listenable_builder-library.html">multi_value_listenable_builder</a></span>
</dt>
<dd>
</dd>
<dt id="mutex">
<span class="name"><a href="features_core_utils_mutex/features_core_utils_mutex-library.html">mutex</a></span>
</dt>
<dd>
</dd>
<dt id="navigation_service">
<span class="name"><a href="features_core_services_navigation_service/features_core_services_navigation_service-library.html">navigation_service</a></span>
</dt>
<dd>
</dd>
<dt id="object_extensions">
<span class="name"><a href="features_core_data_extensions_object_extensions/features_core_data_extensions_object_extensions-library.html">object_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="overlay_service">
<span class="name"><a href="features_core_services_overlay_service/features_core_services_overlay_service-library.html">overlay_service</a></span>
</dt>
<dd>
</dd>
<dt id="random_extensions">
<span class="name"><a href="features_core_data_extensions_random_extensions/features_core_data_extensions_random_extensions-library.html">random_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="routes">
<span class="name"><a href="features_core_abstracts_router_routes/features_core_abstracts_router_routes-library.html">routes</a></span>
</dt>
<dd>
</dd>
<dt id="search_option">
<span class="name"><a href="features_home_data_enums_search_option/features_home_data_enums_search_option-library.html">search_option</a></span>
</dt>
<dd>
</dd>
<dt id="stream_extensions">
<span class="name"><a href="features_core_data_extensions_stream_extensions/features_core_data_extensions_stream_extensions-library.html">stream_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="string_extensions">
<span class="name"><a href="features_core_data_extensions_string_extensions/features_core_data_extensions_string_extensions-library.html">string_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="unsplash_images_api">
<span class="name"><a href="features_home_api_unsplash_images_api/features_home_api_unsplash_images_api-library.html">unsplash_images_api</a></span>
</dt>
<dd>
</dd>
<dt id="value_notifier_extensions">
<span class="name"><a href="features_core_data_extensions_value_notifier_extensions/features_core_data_extensions_value_notifier_extensions-library.html">value_notifier_extensions</a></span>
</dt>
<dd>
</dd>
<dt id="view_model_builder">
<span class="name"><a href="features_core_widgets_state_view_model_builder/features_core_widgets_state_view_model_builder-library.html">view_model_builder</a></span>
</dt>
<dd>
</dd>
<dt id="view_model_state">
<span class="name"><a href="features_core_data_enums_view_model_state/features_core_data_enums_view_model_state-library.html">view_model_state</a></span>
</dt>
<dd>
</dd>
</dl>
</section>
</div> <!-- /.main-content -->
<div id="dartdoc-sidebar-left" class="sidebar sidebar-offcanvas-left">
<header id="header-search-sidebar" class="hidden-l">
<form class="search-sidebar" role="search">
<input type="text" id="search-sidebar" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
</form>
</header>
<ol class="breadcrumbs gt-separated dark hidden-l" id="sidebar-nav">
<li class="self-crumb">mc_gallery package</li>
</ol>
<h5 class="hidden-xs"><span class="package-name">mc_gallery</span> <span class="package-kind">package</span></h5>
<ol>
<li class="section-title">Libraries</li>
<li><a href="features_core_widgets_animated_column/features_core_widgets_animated_column-library.html">animated_column</a></li>
<li><a href="app/app-library.html">app</a></li>
<li><a href="features_core_services_app_lifecycle_service/features_core_services_app_lifecycle_service-library.html">app_lifecycle_service</a></li>
<li><a href="features_core_abstracts_router_app_router/features_core_abstracts_router_app_router-library.html">app_router</a></li>
<li><a href="features_core_abstracts_app_setup/features_core_abstracts_app_setup-library.html">app_setup</a></li>
<li><a href="features_core_abstracts_base_view_model/features_core_abstracts_base_view_model-library.html">base_view_model</a></li>
<li><a href="features_core_services_connections_service/features_core_services_connections_service-library.html">connections_service</a></li>
<li><a href="features_core_data_constants_const_colors/features_core_data_constants_const_colors-library.html">const_colors</a></li>
<li><a href="features_core_data_constants_const_durations/features_core_data_constants_const_durations-library.html">const_durations</a></li>
<li><a href="features_core_data_constants_const_input_formatters/features_core_data_constants_const_input_formatters-library.html">const_input_formatters</a></li>
<li><a href="features_core_data_constants_const_input_validators/features_core_data_constants_const_input_validators-library.html">const_input_validators</a></li>
<li><a href="features_core_data_constants_const_media/features_core_data_constants_const_media-library.html">const_media</a></li>
<li><a href="features_core_data_constants_const_sorters/features_core_data_constants_const_sorters-library.html">const_sorters</a></li>
<li><a href="features_core_data_constants_const_text/features_core_data_constants_const_text-library.html">const_text</a></li>
<li><a href="features_core_data_constants_const_values/features_core_data_constants_const_values-library.html">const_values</a></li>
<li><a href="features_core_data_extensions_context_extensions/features_core_data_extensions_context_extensions-library.html">context_extensions</a></li>
<li><a href="features_home_widgets_custom_wrap/features_home_widgets_custom_wrap-library.html">custom_wrap</a></li>
<li><a href="features_core_data_extensions_dio_extensions/features_core_data_extensions_dio_extensions-library.html">dio_extensions</a></li>
<li><a href="features_core_views_error_page_view/features_core_views_error_page_view-library.html">error_page_view</a></li>
<li><a href="features_home_views_gallery_gallery_view/features_home_views_gallery_gallery_view-library.html">gallery_view</a></li>
<li><a href="features_home_views_gallery_gallery_view_model/features_home_views_gallery_gallery_view_model-library.html">gallery_view_model</a></li>
<li><a href="features_core_widgets_gap/features_core_widgets_gap-library.html">gap</a></li>
<li><a href="features_home_services_image_cache_manager_service/features_home_services_image_cache_manager_service-library.html">image_cache_manager_service</a></li>
<li><a href="features_home_views_image_carousel_image_carousel_view/features_home_views_image_carousel_image_carousel_view-library.html">image_carousel_view</a></li>
<li><a href="features_home_views_image_carousel_image_carousel_view_model/features_home_views_image_carousel_image_carousel_view_model-library.html">image_carousel_view_model</a></li>
<li><a href="features_home_data_models_image_model/features_home_data_models_image_model-library.html">image_model</a></li>
<li><a href="features_home_data_dtos_image_model_dto/features_home_data_dtos_image_model_dto-library.html">image_model_dto</a></li>
<li><a href="features_home_abstracts_images_api/features_home_abstracts_images_api-library.html">images_api</a></li>
<li><a href="features_home_services_images_service/features_home_services_images_service-library.html">images_service</a></li>
<li><a href="features_core_data_extensions_iterable_extensions/features_core_data_extensions_iterable_extensions-library.html">iterable_extensions</a></li>
<li><a href="l10n_generated_l10n/l10n_generated_l10n-library.html">l10n</a></li>
<li><a href="features_core_data_extensions_list_extensions/features_core_data_extensions_list_extensions-library.html">list_extensions</a></li>
<li><a href="features_core_services_local_storage_service/features_core_services_local_storage_service-library.html">local_storage_service</a></li>
<li><a href="locator/locator-library.html">locator</a></li>
<li><a href="features_core_services_logging_service/features_core_services_logging_service-library.html">logging_service</a></li>
<li><a href="main/main-library.html">main</a></li>
<li><a href="features_core_data_extensions_map_extensions/features_core_data_extensions_map_extensions-library.html">map_extensions</a></li>
<li><a href="features_core_widgets_mcg_scaffold/features_core_widgets_mcg_scaffold-library.html">mcg_scaffold</a></li>
<li><a href="l10n_generated_intl_messages_all/l10n_generated_intl_messages_all-library.html">messages_all</a></li>
<li><a href="l10n_generated_intl_messages_en/l10n_generated_intl_messages_en-library.html">messages_en</a></li>
<li><a href="features_core_widgets_state_multi_value_listenable_builder/features_core_widgets_state_multi_value_listenable_builder-library.html">multi_value_listenable_builder</a></li>
<li><a href="features_core_utils_mutex/features_core_utils_mutex-library.html">mutex</a></li>
<li><a href="features_core_services_navigation_service/features_core_services_navigation_service-library.html">navigation_service</a></li>
<li><a href="features_core_data_extensions_object_extensions/features_core_data_extensions_object_extensions-library.html">object_extensions</a></li>
<li><a href="features_core_services_overlay_service/features_core_services_overlay_service-library.html">overlay_service</a></li>
<li><a href="features_core_data_extensions_random_extensions/features_core_data_extensions_random_extensions-library.html">random_extensions</a></li>
<li><a href="features_core_abstracts_router_routes/features_core_abstracts_router_routes-library.html">routes</a></li>
<li><a href="features_home_data_enums_search_option/features_home_data_enums_search_option-library.html">search_option</a></li>
<li><a href="features_core_data_extensions_stream_extensions/features_core_data_extensions_stream_extensions-library.html">stream_extensions</a></li>
<li><a href="features_core_data_extensions_string_extensions/features_core_data_extensions_string_extensions-library.html">string_extensions</a></li>
<li><a href="features_home_api_unsplash_images_api/features_home_api_unsplash_images_api-library.html">unsplash_images_api</a></li>
<li><a href="features_core_data_extensions_value_notifier_extensions/features_core_data_extensions_value_notifier_extensions-library.html">value_notifier_extensions</a></li>
<li><a href="features_core_widgets_state_view_model_builder/features_core_widgets_state_view_model_builder-library.html">view_model_builder</a></li>
<li><a href="features_core_data_enums_view_model_state/features_core_data_enums_view_model_state-library.html">view_model_state</a></li>
</ol>
</div>
<div id="dartdoc-sidebar-right" class="sidebar sidebar-offcanvas-right">
</div>
</main>
<footer>
<span class="no-break">
mc_gallery
1.0.0+1
</span>
</footer>
<script src="static-assets/highlight.pack.js?v1"></script>
<script src="static-assets/docs.dart.js"></script>
</body>
</html>