GithubHelp home page GithubHelp logo

ferraridamiano / converternow Goto Github PK

View Code? Open in Web Editor NEW
358.0 11.0 57.0 38.92 MB

The Unit Converter app: easy, immediate and multi-platform

Home Page: https://converter-now.web.app

License: GNU General Public License v3.0

Kotlin 0.06% Dart 79.80% HTML 1.48% Ruby 0.02% CMake 7.91% C++ 10.09% C 0.64%
flutter flutter-app material-design android webapp dart cross-platform converter-app unit-converters conversion

converternow's People

Contributors

ahmetlii avatar atrafon avatar cosify avatar daniel5551 avatar dependabot[bot] avatar dfandrich avatar ferraridamiano avatar ftno avatar harshmakwana27 avatar kevmoo avatar milotype avatar muhaaliss avatar n-berenice avatar omer358 avatar pereorga avatar plum7x avatar realpixelcode avatar rehork avatar syu-pf-ssy avatar the7thnightmare avatar torok42 avatar u2code avatar vsnmrn 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  avatar

converternow's Issues

Calculator improvement

We should improve the calculator:

  • create a model of the calculator and separate it from the UI
  • setup a test suite
  • migrate from the depracted raisedbutton to elevatedButton

Name problem

Hi @ferraridamiano,

First thank you for this application :-)

In the search, there is a problem if the name is on multiple lines

Sans titre

Add more languages

If you want to contribute to this project translating the app you are welcome!

Here you can find the updated instructions on how you can add a new language (or improve an existing one).

Here is the current status of the translations:

Language App translation Store page translation Credits
Arabic ✔️ ✔️ @omer358
Catalan ✔️ @pereorga
Chinese ✔️ ✔️ @syu-pf-ssy
Chinese (traditional) ✔️ ✔️ @plum7x
Croatian ✔️ ✔️ @milotype
Dutch ✔️ ✔️ @David-git-code
English ✔️ ✔️ @ferraridamiano
French ✔️ ✔️ @Torok42
German ✔️ ✔️ @u2code
Indonesian ✔️ ✔️ @the7thNightmare
Italian ✔️ ✔️ @ferraridamiano
Japanese ✔️ ✔️ 匿名, @syu-pf-ssy
Norwegian ✔️ @FTno
Polish ✔️ ✔️ @rehork
Portuguese ✔️ ✔️ @mezysinc
Russian ✔️ ✔️ @vadimyoungg @Atrafon
Spanish ✔️ ✔️ @n-berenice
Turkish ✔️ ✔️ @muhaaliss

Thanks in advance! 💚

Add Windows support

Few days ago the flutter team has announced that flutter for Windows has reached the alpha stage. All the packages that we use are Windows compatible. I tried to compile for windows and it works pretty good. We should add the support for Windows.

Here's some screenshots:
Immagine5

Immagine6

Theme change

At the moment you can change the theme of the app just if you change the theme on the phone (just android 9/10 and above). We need to implement a switch to setup the theme between light, dark and system so also with android 9/10 and below can change the theme of the app.

Improve the structure of the code

We should separate more the logic of the app from the UI. Provider package is here to help.
We should also remove ConversionManager.dart because we could do everything inside ConversionPage.dart

Use units_converter package

I took the code that compute the conversion of this app and put it in a library so everyone can build it's own unit converter or do whatever he/she want. Now I want to remove these block of code from this repo and use the library.
You can view the library here.

Add tools section

As requested by many app user we should add a tools section where we can add any kind of tools, such as: time transfer calculator, trip cost (cost of fuel on a given distance), etc
I opened a new branch dedicated to this feature

Change exchange rate api service

The exchange rate api service that we are currently using is no longer free, in fact the current app version is stuck to old values. We should migrate to the free service of the ECB.

The app downloads the currency rates even if it already have them

The app should download the currencies rates just if what already has is older than a day. The problem is that the api we use returns a date that is referred to some time zone that may not be the same of the time zone of the user. And what is saved is the http response, when the app is opened the second time in that day checks the latest http response and compare with the date of the user, so it launches a new http request even if the rates are already updated.

Here's the problem:
(I commented just the incriminated lines)

 _getCurrency() async {
    String now = DateFormat("yyyy-MM-dd").format(DateTime.now());
   
    String dataFetched=prefs.getString("currencyRates"); //here we get the saved currency
    if(dataFetched==null || CurrencyJSONObject.fromJson(json.decode(dataFetched)).date!=now){ //it compares the date saved with the current date of the user
        try{
          final response =await http.get('https://api.exchangeratesapi.io/latest?symbols=USD,GBP,INR,CNY,JPY,CHF,SEK,RUB,CAD,KRW,BRL,HKD,AUD,NZD,MXN,SGD,NOK,TRY,ZAR,DKK,PLN,THB,MYR,HUF,CZK,ILS,IDR,PHP,RON');
          if (response.statusCode == 200) {

            CurrencyJSONObject currencyObject = new CurrencyJSONObject.fromJson(json.decode(response.body));
            currencyValues=currencyObject.rates;  

            lastUpdateCurrency=MyLocalizations.of(context).trans('ultimo_update_valute')+MyLocalizations.of(context).trans('oggi');

            prefs.setString("currencyRates", response.body); //we save the currency rates with a date that can be different from the date of the user due to different time zones
          }
          else
            _leggiCurrenciesSalvate();

        }catch(e){
          print(e);
          _leggiCurrenciesSalvate();
      }
    }
    else{
      _leggiCurrenciesSalvate();
      lastUpdateCurrency=MyLocalizations.of(context).trans('ultimo_update_valute')+MyLocalizations.of(context).trans('oggi');
    }
    setState(() {
      isCurrencyLoading=false;
    });
  }

Data transfer calculator

Ciao,
Greetings from Italy.
Thanks for this unit converter, until today I had to use shady apps filled with ads.

There's a calculation I do a lot and I think would fit nice the app: data transfer calculator.
E.g: How much time does it take to transfer 2.5 GB at 3.8 MB/s?
It should allow the user to pick whatever unit combination desires.
I use this one but is ugly and not mobile friendly

Thanks!

Use intl package

We should use intl package for translation and using more modern arb files instead of json. And we should rename the italian key in english key so that the contributors effort will be less.

Add to Debian & Arch Repositories

Please add this app to the debian and arch repositories so many distros can download the app without having to use snaps or flatpaks.

Improve coherence in settings

On desktop and web some option in the settings have no sense. For example: if I downloaded the linux app I don't want to rate the android app on the play store. But a good option would be: "download android app" or "rate the app on snap store", etc.

move the inscription above

I don't see part of the inscription. please move the inscription above so that the button does not interfere with watching.
bug

New icons!

At the moment every icon has a different style and not every icon looks nice. I am not good with graphics, so if you are you can contribute to this project! You can post here below your suggestions. Then I will tell you how you can submit a PR.

Add Linux support

As of flutter release linux in the alpha channel we should deploy a snap version of Converter NOW. All the packages we use have linux support. We are just waiting this issue to be fixed flutter/flutter#60743

UPDATE 28th July
The app can be compiled and works but has some graphical bugs. We are waiting for a stabler version of flutter for linux.

(Improvement) Reorganizing the app tabs into categories

Hi @ferraridamiano I would like to make a proposition for the organization of the app as I believe it would be better if we have Master Categories instead of having all the tabs on the side of the app, I propose to use categories like:

Geometry: Length, Area, Volume, Angles
Finance : Currencies
Physics: Force, Speed, Temperature, Time Energy, Power, Pressure, Mass
Numerical: Numeral systems, SI Prefix
Practical: Fuel Consumption, Shoe size, Digital Data, Torque

I think It will make the app more organized and easier quicker to navigate!

hope you give it a thought :)

(Feature) Adding Finance Tools

Hi @ferraridamiano again

I would like to also propose to add a Financial tools to make the app more useful like the following:

- Unite Price: to calculate the price of a unity product from the Price and quantity
- Sales Tax: taking as input the price, tax, and a method (add or substract) and give the output: Final price, and tax amount
- Tip: taking as input the Bill, People, and the Tip (15% default) and give the output: Final Bill, Cost per Person and Tip amount
- Loan: taking as input the Loan, Rate(per Yr%), and the Period(in Years or Months) and give the output: Monthly Pay, Total Pay and Interest
- Interest: Simple and compound interest.

If this could be implemented It would be very helpful and very cool!

Best Regards

High CPU usage on Linux

The Linux version takes up 60-70% of my CPU usage on Fedora 33 KDE. I installed it via the snap store.

Any idea why? Is it a flutter bug?

Specs:

Kernel: Linux 5.10.20-200.fc33.x86_64 x86_64
Distro: Fedora release 33 (Thirty Three)
CPU:    Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz
        4 cores/threads
        3500.00 MHz
RAM:    7.61 GiB
GPU:    Mesa Intel(R) HD Graphics 620 (KBL GT2)
        OpenGL 4.6 (Compatibility Profile) Mesa 20.3.4
        GLSL 4.60

More units

As requested by someone we should add other units:

  • mills
  • ISK
  • HRK
  • BGN

If you need others, write them below

Please add timezone conversions!

Hey! I LOVE your app and it meets all of my needs, so thank you. But just because it misses timezone conversion it makes it difficult to use it as the default. Hoping there is a possibility that you can add this.

App quits on launch

Im seeing an error I have had with a couple of Snap Games, but not yet with an app.
I installed 2.6.0 latest/stable from Ubuntu Software. Launching the app has it appear in the dock for a moment, then quit.

si_init_perfcounters: max_sh_per_se = 2 not supported (inaccurate performance counters) caught my eye as it is what i have seen with a couple of Snap Games that won't run (quit on launch), when I install the hirsute-universe version they run fine. In this case that is not an option.

Ubuntu 21.04, Lenovo Thinkbook 14 G2 AMD.

journalctl -r


 7月 22 16:18:50 Sulaco converternow[11672]: The program 'converternow' received an X Window System error.
                                              This probably reflects a bug in the program.
                                              The error was 'BadAlloc'.
                                                (Details: serial 380 error_code 11 request_code 149 (unknown) minor_code 2)
                                                (Note to programmers: normally, X errors are reported asynchronously;
                                                 that is, you will receive the error a while after causing it.
                                                 To debug your program, run it with the GDK_SYNCHRONIZE environment
                                                 variable to change this behavior. You can then get a meaningful
                                                 backtrace from your debugger if you break on the gdk_x_error() function.)
 7月 22 16:18:50 Sulaco audit[11672]: AVC apparmor="DENIED" operation="open" profile="snap.converternow.converternow" name="/proc/sys/vm/max_map_count" pid=11672 comm="converternow" requested_mask>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:89): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:88): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:87): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:86): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:85): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:84): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:83): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:82): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:81): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:80): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco converternow_converternow.desktop[11672]: si_init_perfcounters: max_sh_per_se = 2 not supported (inaccurate performance counters)
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
 7月 22 16:18:50 Sulaco converternow_converternow.desktop[11672]: /usr/share/libdrm/amdgpu.ids: No such file or directory
 7月 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:4055:23: 'font-feature-settings' is not a valid property name
 7月 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:3593:25: 'font-feature-settings' is not a valid property name
 7月 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:1555:23: 'font-feature-settings' is not a valid property name
 7月 22 16:18:50 Sulaco converternow[11672]: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-jL5mJj0Bis: No such file or directory
 7月 22 16:18:50 Sulaco systemd[909]: app-gnome-converternow_converternow-11672.scope: Succeeded.
 7月 22 16:18:50 Sulaco systemd[909]: Started snap.converternow.converternow.07dbccb0-0d9d-4e79-a047-c427d614bfe7.scope.
 7月 22 16:18:50 Sulaco systemd[909]: Started Application launched by gnome-shell.

Shoe sizes are off

Here in the UK a size 9 is about EU 43, according to your converter, which looks really nice, an EU size 43 is UK 7.08 for men. I wear uk size 9 shoes and they have EU43 marked on them. Every other conversion list I can find online agrees with my shoes.

diziet

Use the standard ReorderableListView

Currently we are using a custom ReorderableList. We should use the standard ReorderableListView.
The ReorderPage should also be optimized for large screens

Improve layout for large screen

At the moment the layout with a small screen and with a big screen is not so different. The idea is to remove the bottom appbar with big screens and integrate everything in the FAB. In this way there will not be a large bottom app bar on the desktop app

HERE a spoiler

Improve the the structure and the state management of the app

I started building this app with the idea to learn dart and flutter. So I made a lot of mistakes, I tried to workaround them with the idea that if it works it's a good thing. But as the app grows in size and complexity it becomes more and more important to structure it well. So from now I will start to do some things:

  1. The business logic must be separated from the UI
  2. I will stop to manage the state with ephemeral state, instead I will use provider to manage the state.
  3. I will change the variable name that I will touch from italian to english so more people can understand the code better

Add continuous delivery

We need to add continuous delivery, so:

  • We don't need to deploy the updated website every time, just push the commit

  • We don't need to manually upload the apk files as release on github

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.