Giter Site home page Giter Site logo

exer_log's People

Contributors

aayushchugh avatar allcontributors[bot] avatar bogdwynny avatar ckelwin avatar darkelectron avatar hannest03 avatar hoffmannkrzysztof avatar jorgelrj avatar jorre127 avatar kallehallden avatar luca400 avatar lukelavery avatar md-siam avatar mfederowicz avatar mhouneylh avatar momshaddinury avatar picklenik avatar rachitkakkar avatar ramsy0dev avatar tenshiamd avatar theamanm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

exer_log's Issues

Remove the .git folder from the flutter folder

When you initially uploaded all the code, the flutter folder on your local machine has a .git folder inside, causing now a flutter folder that's seems empty and has that little icon in the github view.
I recommend to delete the .git folder inside the flutter folder and to commit-push again the contents of that folder, in case you don't want the content to be public on the repo, just add it to the .gitignore.
Screenshot 2022-08-05 at 22 04 58

UI behavior with multiple workouts logged for the same day

Problem:
When multiple workouts are logged for the same day, there is no indication on the day (or the subsequent page when the day is clicked) that there is more than one workout logged. It appears that the subsequent page (set_widget) only displays that last workout information.

Should each workout on the same day be displayed on the same page, one after the other?
Should the Totals data at the top be a grand total of all workouts?

Minor warnings

There are some minor warnings in application code can i remove that..

Saved template removed when the original workout it was created from is deleted

Problem:

  1. Create a new workout (A) and save it as a template (B).
  2. The template is available to be used when starting a new exercise. [OK]
  3. Delete workout (A).
  4. Start a new workout. Notice that the template (B) is no longer available.

Suggestion:
The template should be separate from the original workout it was created from. The template should remain even when the workout is deleted.
Might also need a 'manage template' page to allow create/edit/delete of templates.

BUG: Showing the calendar-screen briefly followed by a black-screen with loading indicators before navigating to the workout-screen after login

Steps to reproduce:

  1. Logout if you are logged in.
  2. Close and remove the app from recent. Restart the app
  3. Login with valid credentials
  4. Notice that for a brief period showing the calendar screen followed by a black screen before navigating to the workout screen

Expected: After login, the user should navigate to the Workout screen

Video
https://user-images.githubusercontent.com/26508767/185309898-c277614a-a435-40ea-becf-a15489c75c1d.mp4

Simplify/Create the AlertDialog API

It would be a good enhancement to create some common base classes/simple API for your AlertDialogs, so that much repeated, similar, mostly design boilerplate code can be eliminated from various places.

In the end we can go, for example, from this:

The entire DeleteWorkoutAlert.class

Plus

showDeleteWorkoutAlertDialog(BuildContext context) {
    RaisedGradientButton okButton = RaisedGradientButton(
      gradient: LinearGradient(
        colors: <Color>[Color(0xFF34D1C2), Color(0xFF31A6DC)],
      ),
      radius: 30,
      child: Text(
        "DELETE",
        style: buttonTextSmall,
      ),
      onPressed: () {
        deleteWorkout(workoutData.workout);
        Navigator.of(context).pop();
          Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (context) => CalendarPage(
                      ),
                    ),
                  );

      },
    );

    // set up the AlertDialog
    DeleteWorkoutAlert alert = DeleteWorkoutAlert(okButton);

    // show the dialog
    showDialog(
      barrierDismissible: false,
      context: context,
      builder: (BuildContext context) {
        return alert;
      },
    );
  }

To just these few lines of code

showDeleteWorkoutAlertDialog() async {
	final response = await showConfirmationDialog(title: 'Are you sure you want to delete this workout?');
	if(response) {
		// Delete workout
		// Navigate
	} 
}

Like this we can eliminate some then redundant classes, and greatly cleanup the code that is inside the Pages calling for AlertDialogs

UI tweak for `Save Workout` page

Problem:
The textfield on this page is the template name. The textfield is enabled even when the checkbox for Save as template is disabled. This may cause confusion to some, as the hintText for the textfield even says name your workout.

Suggestion:

  1. Move the textfield down, after the checkbox. Textfield should be disabled when checkbox is unchecked, and enabled when checked.
  2. Update the hinttext to something like template name or name of template.

image

Fix move function body out of the widgets

It would be much better if there would be a function (void doSomething() { ... }) instead of leaving a function logic inside of a widget

// Instead of:

TextButton(
    child: const Text("Click Me"),
    onPressed: () { ... },
)

// Do:

// somewhere in the widget scope..
void doSomething() { ... }

// Widget body
TextButton(
    child: const Text("Click Me"),
    onPressed: doSomething,
)

Block ability to enter empty workout name

Now there is no check to see if you entered an empty workout name. This might cause some issue later on. Also check on duplicate workout names. The dropdown button expects every dropdown menu item to have a unique value, so it break when you have multiple items of the same value. This is how it looks when I added multiple workouts with no name.
Screenshot 2022-08-10 at 23 50 37

improvement in formatting

Maybe it would be a good idea to run dart format for the whole project before making every pull request, this way the formatting is the same across the app. Currently the problem is that every contributor has different formatters, line lengths etc., which makes it harder when reviewing pull requests to see what are the actual changes, and what is just the formatting changing.

Git directory structure

I think we should put Git on the main directory where the .README file exists. so that when users come to the repo get a gist of the project and can read the DOCS we want them to read.
so instead of going to /app/exerlog user sees the project after cloning the project. notice that we clone a repo it automatically will be extracted within a directory with the same name as the repo name

and also it would be great to add a explicit steps to run the app for the sake of running the app easier; so that they can follow the process of installation based on a guide.

[chore] - add linting support

Hey, always been lurking in your videos and took a quick look at the codebase. I think the net biggest improvement will be done by just adding lints.

There are a couple of different approaches but new projects use flutter_lints which does the job quite well. This would just be a tedius change as there will probably be a lot of small issues that needs to be resolved but should still be very simple and straight forward.

Keep making great videos 😊

Firebase distribution with github actions.

@KalleHallden I was thinking it would be good if we can add firebase distribution for bunch of testers/contributors. It is super simple, I am pasting a yaml file that I use for almost all my projects.

name: Android Firebase CI
'on':
  push:
    branches:
      - stable
  pull_request:
    branches:
      - stable
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: set up JDK v11
        uses: actions/setup-java@v1
        with:
          java-version: 12
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v1
        with:
          channel: 'beta'
      - run: flutter pub get
      
      # Build apk.
      - run: flutter build apk --debug #add you firebase command if it is different
      - name: upload artifact to Firebase App Distribution
        uses: wzieba/Firebase-Distribution-Github-Action@master
        with:
          appId: '${{secrets.FIREBASE_APP_ID}}'
          token: '${{secrets.FIREBASE_TOKEN}}'
          groups: group1 #<GROUP NAME>
          file: build/app/outputs/flutter-apk/app-debug.apk

Readme buggies

Screen Shot 2022-08-20 at 4 12 35 PM

Screen Shot 2022-08-20 at 4 13 13 PM

Seems like the shields.io badges don't like to be centered in the Markdown syntax, HTML <img tag is needed instead
Also, the bot defaults seem to have messed up the link again.
I'll make a PR with fixes in a minute

Firebase Features Suggestion

@KalleHallden It might be a good idea to implement Firebase Crashlytics and Performance monitoring. These will give you good insight about your app on the Firebase console.

Here is some sample code for implementing Crashlytics, it looks pretty simple:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  // Pass all uncaught errors from the framework to Crashlytics.
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

  runApp(MyApp());
}

a unique heroTag needs to be defined

This error appears on the excercise_card.dart page-

The following assertion was thrown during a scheduler callback:
There are multiple heroes that share the same tag within a subtree.

Within each subtree for which heroes are to be animated (i.e. a PageRoute subtree), each Hero must have a unique non-null tag.
In this case, multiple heroes had the following tag: <default FloatingActionButton tag>
Here is the subtree for one of the offending heroes: Hero
  tag: <default FloatingActionButton tag>
  state: _HeroState#81812
When the exception was thrown, this was the stack: 
#0      Hero._allHeroesFor.inviteHero.<anonymous closure> (package:flutter/src/widgets/heroes.dart:271:11)
#1      Hero._allHeroesFor.inviteHero (package:flutter/src/widgets/heroes.dart:282:8)
#2      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:301:11)
#3      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6202:14)
#4      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#5      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4859:14)
#6      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#7      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6202:14)
#8      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#9      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4859:14)
#10     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#11     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6202:14)
#12     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#13     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4859:14)
#14     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#15     MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6314:16)
#16     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:316:15)
#17     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:4859:14)
......
#61     HeroController._maybeStartHeroTransition.<anonymous closure> (package:flutter/src/widgets/heroes.dart:884:11)
#62     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146:15)
#63     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1091:9)
#64     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:997:5)
#68     _invoke (dart:ui/hooks.dart:151:10)
#69     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)
#70     _drawFrame (dart:ui/hooks.dart:115:31)
(elided 3 frames from dart:async)

code which gives error is-

FloatingActionButton(
                heroTag: null,
                elevation: 0,
                backgroundColor: Colors.transparent,
                child: Icon(
                  Icons.add,
                  size: 50,
                  color: backgroundColor,
                ),
                onPressed: addSet,
              ),

we need to define a unique heroTag for every exercise card.

Fix navigation

When finishing a workout you go to the calendar page. But the problem is that you can then navigate back using the back arrow to the workout you just finished (I assume this is not intended seeing as we already finished and saved this workout at this moment).

Also when pressing the back button on the workout page, we do a pop and then push to the calendar screen. This looks visually confusing because we press back, but it looks like a new page gets pushed onto the screen.

My suggestion is to change the navigation flow so when you go from the calendar page to the workout page we do this with a push instead ( its a push replace now) this way we can just pop when pressing the back button. Same for when we save the session we can just pop back to the calendar page. This way we don't have the problem where we can navigate back to a already finished session.

Simulator.Screen.Recording.-.iPhone.12.-.2022-08-10.at.23.37.23.mp4

noNetworkConnectionSnackBar.dart Error

noNetworkConnectionSnackBar.dart currently contains the following code:

import 'package:exerlog/UI/global.dart';
import 'package:flutter/material.dart';

SnackBar noNetworkConnectionSnackBar() => SnackBar(
      backgroundColor: redBackgroundColor,
      duration: Duration(
          days:
              365), // set to a year so that it doesn't disappear automatically untill the user clicks on the Dismiss button
      content: Text('No network connection, please check your connection'),
      action: SnackBarAction(
        textColor: textColorBlue,
        label: 'Dismiss',
        onPressed: () {},
      ),
    );

redBackgroundColor and textColorBlue do not exist in global.dart

Improve loading for workout page

Currently when you open the workout page you show a future builder which contains a loading indicator while loading. When it is loaded you then show the actual page. The problem is that only the loaded page contains a scaffold, the error and loading states of this page do not contain a scaffold. This causes some visual problems when loading the page because it flashes black for a moment while loading. Also when an error gets shown it looks like the image below. My suggestion is to show the things we can show without the data like the background, appbar etc. And then just put the loading indicator over the part of the page that actually needs the data that is loading.

Simulator Screen Shot - iPhone 12 - 2022-08-10 at 23 19 56

Discussion Section

Hi,
I think it would be useful to have a discussion section, so other contributors can discuss about the project.

Provide Login feedback for users

Create feedback for users

Logging in

  • incorrect password
  • incorrect email
  • email/account doesn't exist

Signing up

  • email already exists
  • passwords don't match
  • password is too short

This issue is done when all of the above is completed. This feature should be worked on in the branch Login

Splash Screen

If we have a splash screen then we can check

  1. If the user is logged in
  2. If the app is newly installed
  3. This would also solve the black screen issue, after logging in.

From the design side, I am thinking: A screen with Logo and App Name in the middle. The background color is our app's primary background color.

General improvements

Just some general improvements that I thing would future proof the app.

  • Add a central file with all the colours/textStyles, this has already been added in the form of the global.dart file, but a ton of places still don't use this file and redefine the color again and again. This could be problematic when adding extra themes/dark mode for example.
  • Use named routes. Storing the names of each route into a file and using these names navigate would give us a clear overview of all the paths and navigation options the app currently has, instead of them being scattered throughout the app as they are now.
  • Start separating the logic from the ui. Right now the login and ui are all implemented in the same file, but we could implement the MVVM model for example to seperate these 2 for cleaner code. If this is too much work a good start already would be to add all the functions of a widget at the bottom of the widget and then just calling them inside the widget when needed. This also gives us a clear overview of all the functionality that a widget has.
  • Currently all the text in the app is hardcoded, but this would be problematic when trying to translate the app into different languages (I don't know if this is planned), so I would recommend using keys instead of hardcoded string and then using these keys to get the translation of the current locale. An example package of this is https://pub.dev/packages/locale_gen.

Minor calendar widget improvement

The calendar widget could be modified to show a single centered, ideally larger CircularProgressIndicator(), Right now, it shows 35 CircularProgressIndicator() simultaneously.

As of now, this is what the widget looks like.
Screenshot_2022-08-19_23-53-03

feat: convetional commits to create an explicit commit history

I suggest to add a convention for the commit messages to ensure explicit commit messages. This makes it easier to create automated changelogs and other things.

I have used conventional commits including git hooks to validate the commit messages during every commit.

There are also other convetions for commits. The important thing is to use 1 convention consistently.

login and forgot password feedback for users valid with OWASP recommedations

Hi @KalleHallden I know that login feedback for users were raised in that PR
but for seucrity reasons i think will be good to use OWASP recommendations for that kind of labels (ie: dont inform user that used credentials match/dont match to existing accout)

source of correct and incorrect responses

  1. https://cheatsheetseries.owasp.org/cheatsheets/Forgot_Password_Cheat_Sheet.html
  2. https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html#incorrect-and-correct-response-examples

not able to google sign in

E/flutter ( 6690): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
E/flutter ( 6690): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:607:7)
E/flutter ( 6690): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:167:18)
E/flutter ( 6690): <asynchronous suspension>
E/flutter ( 6690): #2      MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:367:43)
E/flutter ( 6690): <asynchronous suspension>
E/flutter ( 6690): #3      GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:248:30)
E/flutter ( 6690): <asynchronous suspension>
E/flutter ( 6690): #4      GoogleSignIn.signIn.isCanceled (package:google_sign_in/google_sign_in.dart:378:5)
E/flutter ( 6690): <asynchronous suspension>
E/flutter ( 6690): 

Getting this error when trying to google sign in.
As mentioned in this stackoverflow answer, we need to add debug SHA-1 keys of developers to the firebase project. How can that be done?

README.md and LICENSE and .gitnore

Hi,
It seems that the repo doesn't have a README.md and LICENSE and .gitnore. So It would be useful to have those files for new contributors to know what the project is about and etc...

initial run errors - FirebaseOptions

I wanted run this application for the first time, so I installed flutter from https://docs.flutter.dev/get-started/install/linux, next run all steps from Development section, then run:

flutter run                                                                                                                                                               
Launching lib/main.dart on Chrome in debug mode...                                                                                                                           
../../snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-1.0.3/lib/src/framework.dart:275:26: Warning: Operand of null-aware operation '!' has  
type 'SchedulerBinding' which excludes null.                                                                                                                                 
 - 'SchedulerBinding' is from 'package:flutter/src/scheduler/binding.dart' ('../../snap/flutter/common/flutter/packages/flutter/lib/src/scheduler/binding.dart').            
    if (SchedulerBinding.instance!.schedulerPhase ==                                                                                                                         
                         ^

of course Chrome with debug mode started, but stopped with error on console:

┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────                                                     
│ #0   packages/exerlog/src/utils/logger/logger.dart 29:58                  info                                                                                             
│ #1   packages/exerlog/src/utils/logger/riverpod_logger.dart 13:9          didUpdateProvider                                                                                
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄                                                     
│ 💡 {                                                                                                                                                                       
│ 💡   "provider": "FutureProvider<FirebaseApp>",                                                                                                                            
│ 💡   "newValue": "AsyncError<FirebaseApp>(error: Assertion failed:                                                                                                         
file:///home/developer/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-1.7.1/lib/src/firebase_core_web.dart:207:11                        
│ 💡 options != null                                                                                                                                                         
│ 💡 "FirebaseOptions cannot be null when creating the default app.", stackTrace: dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49  throw_       
│ 💡 dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 29:3    assertFailed                                                                              
│ 💡 packages/firebase_core_web/src/firebase_core_web.dart 207:18                  initializeApp                                                                             
│ 💡 dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50            <fn>                                                                                      
│ 💡 dart-sdk/lib/async/zone.dart 1685:54                                          runUnary                                                                                  
│ 💡 dart-sdk/lib/async/future_impl.dart 147:18                                    handleValue                                                                               
│ 💡 dart-sdk/lib/async/future_impl.dart 766:44                                    handleValueCallback                                                                       
│ 💡 dart-sdk/lib/async/future_impl.dart 795:13                                    _propagateToListeners                                                                     
│ 💡 dart-sdk/lib/async/future_impl.dart 566:5                                     [_completeWithValue]                                                                      
│ 💡 dart-sdk/lib/async/future.dart 527:22                                         <fn>                                                                                      
│ 💡 dart-sdk/lib/async/zone.dart 1685:54                                          runUnary                                                                                  
│ 💡 dart-sdk/lib/async/future_impl.dart 147:18                                    handleValue                                                                               
│ 💡 dart-sdk/lib/async/future_impl.dart 766:44                                    handleValueCallback                                                                       
│ 💡 dart-sdk/lib/async/future_impl.dart 795:13                                    _propagateToListeners                                                                     
│ 💡 dart-sdk/lib/async/future_impl.dart 566:5                                     [_completeWithValue]
│ 💡 dart-sdk/lib/async/future_impl.dart 639:7                                     callback
│ 💡 dart-sdk/lib/async/schedule_microtask.dart 40:11                              _microtaskLoop
│ 💡 dart-sdk/lib/async/schedule_microtask.dart 49:5                               _startMicrotaskLoop
│ 💡 dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15           <fn>
│ 💡 )"
│ 💡 }
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following TypeErrorImpl was thrown building MyApp(dirty, dependencies:
[UncontrolledProviderScope], state: _ConsumerState#c34bc):
Expected a value of type 'String?', but got one of type 'AssertionErrorImpl'

The relevant error-causing widget was:
  MyApp MyApp:file:///home/developer/git-repos/exer_log/lib/main.dart:44:14

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 84:3        castError
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 452:10  cast 
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart 367:9        as
packages/exerlog/main.dart 87:15                                                  <fn> 
packages/riverpod/src/common.dart 265:26                                          <fn> 
packages/riverpod/src/common.dart 391:17                                          [_map]
packages/riverpod/src/common.dart 263:12                                          AsyncValueX.when
packages/exerlog/main.dart 62:22                                                  build
packages/flutter_riverpod/src/consumer.dart 371:19                                build
packages/flutter/src/widgets/framework.dart 4919:27                               build
packages/flutter_riverpod/src/consumer.dart 431:20                                build
packages/flutter/src/widgets/framework.dart 4806:15                               performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                               performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                                rebuild
packages/flutter/src/widgets/framework.dart 2659:18                               buildScope
packages/flutter/src/widgets/binding.dart 891:9                                   drawFrame
packages/flutter/src/rendering/binding.dart 370:5                                 [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1146:15                               [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1083:9                                handleDrawFrame
packages/flutter/src/scheduler/binding.dart 997:5                                 [_handleDrawFrame]
lib/_engine/engine/platform_dispatcher.dart 1090:13                               invoke
lib/_engine/engine/platform_dispatcher.dart 160:5                                 invokeOnDrawFrame
lib/_engine/engine/initialization.dart 194:45                                     <fn> 

════════════════════════════════════════════════════════════════════════════════════════════════════
Application finished.

of course this is my first run, and maybe I should install some additional libs (or make additional config) to avoid these errors

I found some article connected with initialization of firebase in app, maybe it will help: https://fluttercorner.com/firebaseoptions-cannot-be-null-when-creating-the-default-app/

Automation: Add workflow for automatically create new release when pull request is merged into main branch (I can do that)

I think that we should have a workflow in this repo which will automatically create new release on every pull request merged into
main branch. but we have to follow some strict steps to implement this

  • Create new dev branch and set it to default
  • Every one should follow conventional commits eg:- feat(login): ✨ added feedback for users
  • Use semantic release for creating new release (this is help in automatically create release)

I can implement the workflow. but asking for permission to do so

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.