A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.

Related tags

Animation flokk
Overview

Flokk

A fresh and modern Google Contacts manager that integrates with GitHub and Twitter.

Demo Builds

Contributing

You are invited to improve Flokk Contacts! Submitting pull requests, answering and asking questions in the Issues page, and updating documentation are all ways you can contribute to the app.

Please note that although we are monitoring GitHub issues, we aren't actively maintaining the codebase, so community involvement and contributions are really appreciated going forward. We're aiming to review pull requests on a weekly basis.

Getting Set Up

1. Flutter

2. Add Required API Keys

Google Sign In is required in order to run the app (unless running with cached data). The app uses the Google People API, and you will need to provide your own Google OAuth 2 client credentials in the /lib/api_keys.dart file.

Follow the instructions here to enable the People API and create credentials:

To optionally fetch social data for your contacts, add your own API keys for those as well:

Although the Twitter and GitHub keys are optional, they are recommended. Otherwise the app will not be able to fetch tweets and GitHub calls will be subject to a rate limit (https://developer.github.com/v3/#rate-limiting).

Web Builds

If you're building for web:

  • Edit /web/index.html to include your web credentials (web client Id) <meta name="google-signin-client_id" content="YOUR_GOOGLE_SIGN_IN_OAUTH_CLIENT_ID.apps.googleusercontent.com">.
  • This is needed for Google Sign In to work on web builds. For more details, see https://pub.dev/packages/google_sign_in_web

CORS Proxy

For Twitter support to work on web builds, it is necessary to use a CORS proxy. You can set up a proxy on your own domain, or else run a localhost instance with proxy/app.js.

If setting up on your domain, ensure you have enabled https (https://letsencrypt.org/). Once you have the security certificate, edit proxy/app.js and insert your cert and key. This is not necessary if running a localhost instance.

After the proxy is set up, edit services/twitter_rest_service.dart to point to your running proxy instance (e.g. "https://my-proxy.com", "http://localhost", etc.)

For more information, see https://github.com/Rob--W/cors-anywhere

Running With Cached Data

If you simply want to see the app running, it is possible to run the app using cached data:

  • Run the app at least once, to create your data folders
  • Extract the contents of /sample_data.zip to the newly created data folder on your machine:
    • Windows: \Users\[USER]\AppData\Roaming\flokk
    • Linux: $HOME/.local/share/flokk-contacts
    • macOS: /Users/[USER]/Library/Containers/app.flokk/Data/Library/Application Support/app.flokk
  • Overwrite any files that are there
  • Launch the app again, it should now sign in, and load with existing data.
  • If you sign out, your saved data will be wiped and you will need to repeat the process.

Note: This is meant as a 'read-only' mode so you can quickly explore all the widgets and features of the app. Updates, deletes, etc are not expected to work.

Test & Build

Debug Builds

  • Use flutter run -d DEVICE_ID to deploy a test build
  • To get a list of available DEVICE_ID, use flutter run
  • Typical values are: windows, linux, macos, chrome
  • Add --release to deploy an optimized build

Release Builds

  • Use flutter build PACKAGE_TYPE to build a release package
  • To get a list of available PACKAGE_TYPE, use flutter build
  • Typical values are windows, linux, apk, ios
  • In order to build the snap package one must first run lxd init on your system if you haven't already. ** Then execute snapcraft --use-lxd to create the snap from the flutter build

Force Log In

  • The app uses a kForceWebLogin flag to force release builds to skip the oauth screen.
  • Add --dart-define=flokk.forceWebLogin=true to your build command to enable
  • E.g. flutter build web --dart-define=flokk.forceWebLogin=true

Desktop Runners

The /linux and /windows folders contain modifications and should not be upgraded to upstream without first verifying that each plugin works correctly with the new upstream code and any modifications are made.

Since the desktop runners for this project may contain modifications, upgrades should not be made without first verifying that every plugin and embedder can be upgraded and that they remain compatible after an upgrade. Hopefully this will not be as much of an issue once Flutter's desktop support becomes more mature.

--

Happy Flokking!

Comments
  • sqflite issues

    sqflite issues

    Hi, wanna ask how do u guys implement solved the SQL problem in flokk on desktop version. AFAIK, there were no such plugin for sqflite for now in flutter.

    opened by jinfagang 3
  • Couldn't `flutter pub get`

    Couldn't `flutter pub get`

    Hello, After flutter pub get I've got such error:

    Because dartx >=0.2.0 depends on collection >=1.14.11 <1.15.0 and every version of flutter from sdk depends on collection 1.15.0-nullsafety, dartx >=0.2.0 is incompatible with flutter from sdk.
    So, because flokk depends on both flutter any from sdk and dartx ^0.4.0, version solving failed.
    pub get failed (1; So, because flokk depends on both flutter any from sdk and dartx ^0.4.0, version solving failed.)
    

    I have

    $ flutter --version
    Flutter 1.20.0-8.0.pre.125 • channel master • https://github.com/flutter/flutter.git
    Framework • revision 9c4a5ef1ed (9 hours ago) • 2020-07-15 21:41:27 +0100
    Engine • revision 774ae0313d
    Tools • Dart 2.9.0 (build 2.9.0-21.0.dev 89fe12b12a)
    
    opened by gagarin55 2
  • Empty window on Ubuntu 20.04

    Empty window on Ubuntu 20.04

    Just installed the snap version. After starting the app, I can only see an empty window. When I start the app from terminal I get this:

    michal@michal-laptop:~$ flokk-contacts 
    
    (flokk-contacts:3482): Gdk-WARNING **: 09:52:42.440: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
    
    ** (flokk-contacts:3482): WARNING **: 09:52:42.450: Failed to start Flutter engine: Failed to create EGL surface: Bad Native Window
    
    platform-linux 
    opened by mivoligo 2
  • Running with cached data for web target

    Running with cached data for web target

    The README doesn't mention if this is supported or not. When I give it a try I am met with the following errors:

    An Observatory debugger and profiler on Chrome is available at: http://127.0.0.1:59442/WqBomgPWUuI= Flutter Web Bootstrap: Auto [ERROR] Exception: app.settings not found /################################################## [BootstrapCommand] ################################################## [ERROR] Exception: auth.dat not found [ERROR] Exception: twitter.dat not found [ERROR] Exception: github.dat not found [ERROR] Exception: contacts.dat not found [RefreshAuthTokensCommand] Refreshing with token: 1//06TVHZgXSuhqfCgYIARAAGAYSNwF-L9IrPuIVzs3JSYt1xzWSXnK8Vx5cUPgYrEN4FouCtOy1j01hosURDlWogymULquE-e1lXm0 Error: Exception: error-log.txt not found

    Is it possible to extract sample_data.zip somewhere to be able to use cached data?

    opened by rolodex 1
  • Question: Does static instance of context make a perf difference

    Question: Does static instance of context make a perf difference

    I noticed that the AbstractCommand checks to see if the context passed into the constructor matches a previously passed in context.

    https://github.com/gskinnerTeam/flokk/blob/861553120f153a6cba8bf262d6fc02002234469b/flokk_src/lib/commands/abstract_command.dart#L25-L30

    Wondering whether this done purely for perf gains, and if so how noticeable is the difference?

    opened by chimon2000 1
  • README gives incorrect Flutter hash

    README gives incorrect Flutter hash

    The recent changes to the repo appear to be using a recent master—it's using the latest FDE plugin versions, and a fairly recent version of the Windows runner—but the README still says to use Flutter 9c3f0faa6d, which is from June. That wouldn't compile.

    The README should be updated to whatever version you updated against.

    platform-windows 
    opened by stuartmorgan 1
  • Unable to copy text

    Unable to copy text

    Hey, I'm trying to make a flutter desktop app for Linux and in a text field, I'm not able to use any keyboard shortcuts for eg, ctrl+c for copy or ctrl+a for all selection. Can you help me with this?

    opened by rish07 1
  • Fix default geometry for scaled screens

    Fix default geometry for scaled screens

    There is an issue when the application starts up on a scaled (HiDpi) monitor. gtk_widget_set_size_request sets the minimum size for the window. It currently uses 1376x768. On a screen with scale factor of 2, this 2752x1376. I have a 2160x1440 display. Therefore the width is too large to fit on the screen. I updated the code to first get the scale factor and divide the preferred width and height by the scale factor. This now shows up correctly on my display.

    opened by harriseldon 1
  • Cannot resize on Gnome with scaling

    Cannot resize on Gnome with scaling

    I currently use 200% scaling in Gnome. When I launch Flokk, it is larger than my available screen and cannot be resized.

    If I switch the scaling back to 100% and launch Flokk, it appears smaller than my screen and I am able to resize it.

    opened by harriseldon 1
  • Delete login module

    Delete login module

    수정 <flokk_src/lib/main.dart>

    • home: WelcomePage() -> home: MainScaffold()
    • 앱 실행 시 작동되던 시작화면을 로그인화면(WelcomePage)에서 홈화면(MainScaffold)으로 변경함.

    아래 세개의 경로는 위 파일을 수정하니, 자동수정 됨. <flokk_src/linux/flutter/generated_plugins.cmake> <flokk_src/macos/Flutter/GeneratedPluginRegistrant.swift> <flokk_src/windows/flutter/generated_plugins.cmake>

    opened by rhth1998 0
  • Build fails with No named parameter with the name 'autovalidate' on flutter master

    Build fails with No named parameter with the name 'autovalidate' on flutter master

    Flutter master version: 2.9.0-1.0.pre.293

    Build error with No named parameter with the name 'autovalidate'.

    To fix it:

    change autovalidate to autovalidateMode. change final bool autoValidate to final AutovalidateMode autoValidate change this.autoValidate =false to this.autoValidate = AutovalidateMode.disabled

    opened by sgon00 0
  • build fails with KeyEventResult type errors

    build fails with KeyEventResult type errors

    (latest flutter on ubuntu)

    > flutter run -d linux
    Running "flutter pub get" in flokk_src...                          15.8s
    Launching lib/main.dart on Linux in debug mode...
    ERROR: lib/styled_components/styled_text_input.dart:149:20: Error: A value of type 'bool' can't be returned from a function with return type 'KeyEventResult'.
    ERROR:  - 'KeyEventResult' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:             return true;
    ERROR:                    ^
    ERROR: lib/styled_components/styled_text_input.dart:152:16: Error: A value of type 'bool' can't be returned from a function with return type 'KeyEventResult'.
    ERROR:  - 'KeyEventResult' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:         return false;
    ERROR:                ^
    ERROR: lib/views/search/search_bar_view.dart:46:14: Error: The argument type 'bool Function(FocusNode, RawKeyEvent)' can't be assigned to the parameter type 'KeyEventResult Function(FocusNode, RawKeyEvent)?'.
    ERROR:  - 'FocusNode' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:  - 'RawKeyEvent' is from 'package:flutter/src/services/raw_keyboard.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/services/raw_keyboard.dart').
    ERROR:  - 'KeyEventResult' is from 'package:flutter/src/widgets/focus_manager.dart' ('/home/dym/snap/flutter/common/flutter/packages/flutter/lib/src/widgets/focus_manager.dart').
    ERROR:       onKey: _handleKeyPress,
    ERROR:              ^
    Building Linux application...
    Exception: Build process failed
    
    opened by dym-sh 2
  • Where do i place the sample data?

    Where do i place the sample data?

    I'm currently using vscode on windows to launch the web app. As per the README to use cache data, I copy the contents of "sample_data.zip" to "C:\Users<USER>\AppData\Roaming\flokk"

    However, i got some error and exception:

    [ERROR] Exception: app.settings not found ............... Error: Exception: error-log.txt not found .............

    Am i missing any steps?

    opened by jeremy-chua 0
  • Loading only 1000 out of 2566 contacts

    Loading only 1000 out of 2566 contacts

    I am only getting 1000 contacts. I think there is a error in "load more" mechanism. Logs:

    Restarted application in 703ms. flutter: /################################################## flutter: [BootstrapCommand] flutter: DataDir is: C:\Users\jrvid\AppData\Roaming\flokk flutter: ################################################## flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: Response: 200 / { "access_token": "<<>>", "expires_in": 3599, "scope": "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/contacts", "token_type": "Bearer", "id_token": "<<>>" } flutter: Refresh token success. authKey = <<>>, refreshToken = <<>> flutter: [RefreshContactsCommand] flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: REQUEST: https://people.googleapis.com/v1/people/me/connections?access_token=<<>>&personFields=addresses,ageRanges,biographies,birthdays,braggingRights,coverPhotos,emailAddresses,events,genders,imClients,interests,locales,memberships,metadata,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,relationshipInterests,relationshipStatuses,residences,sipAddresses,skills,taglines,urls,userDefined&sortOrder=FIRST_NAME_ASCENDING&pageSize=2000&requestSyncToken=true /// RESPONSE: 200 flutter: token: <<>> 1000 out of 2566 flutter: [RefreshContactGroupsCommand] flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: REQUEST: https://people.googleapis.com/v1/contactGroups?access_token=<<>>&pageSize=1000 /// RESPONSE: 200 flutter: Groups loaded = 13 flutter: Contacts loaded = 1000 flutter: ######################### flutter: BootstrapCommand Complete flutter: ######################### flutter: [RefreshContactsCommand] flutter: [RefreshAuthTokensCommand] Refreshing with token: <<>> flutter: REQUEST: https://people.googleapis.com/v1/people/me/connections?access_token=<<>>&personFields=addresses,ageRanges,biographies,birthdays,braggingRights,coverPhotos,emailAddresses,events,genders,imClients,interests,locales,memberships,metadata,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,relationshipInterests,relationshipStatuses,residences,sipAddresses,skills,taglines,urls,userDefined&sortOrder=FIRST_NAME_ASCENDING&pageSize=2000&requestSyncToken=true /// RESPONSE: 200 flutter: token: <<>> 1000 out of 2566

    opened by vidz1979 1
Releases(1.0.1+1)
  • 1.0.1+1(Sep 18, 2020)

    A small update to the Windows build to show the latest and greatest from Flutter's Windows alpha.

    • Web: https://flokk.app
    • Linux: https://snapcraft.io/flokk-contacts
    • macOS: https://flokk.app/macos/Flokk_Contacts_v1.0.1.dmg
    • Windows: https://flokk.app/windows/flokk-v1.0.1-signed.zip

    You are invited to improve Flokk Contacts! Submitting pull requests, answering and asking questions in the Issues page, and updating documentation are all ways you can contribute to the app.

    Please note that although we are monitoring GitHub issues, we aren’t actively maintaining the codebase, so community involvement and contributions are really appreciated going forward. We’re aiming to review pull requests on a weekly basis.

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Jul 8, 2020)

    • Web: https://flokk.app
    • Linux: https://snapcraft.io/flokk-contacts
    • macOS: https://flokk.app/macos/Flokk_Contacts_v1.0.1.dmg
    • Windows: https://flokk.app/windows/Flokk_Contacts_v1.0.1.zip
    Source code(tar.gz)
    Source code(zip)
Owner
gskinner team
We collaborate with smart, motivated clients to conceptualize, design, and build world-class interactive experiences.
gskinner team
A flutter project with Implementation of a Contacts app in 4 ways (API, Custom, Preferences and Sqflite).

Contacts A flutter project with Implementation of a Contacts app in 4 ways (API, Custom, Preferences and Sqflite). It consist some common operations l

Harsh Sharma 118 Nov 20, 2022
Like Button is a flutter library that allows you to create a button with animation effects similar to Twitter's heart when you like something and animation effects to increase like count.

like_button Language: English | 中文简体 Like Button is a flutter library that allows you to create a button with animation effects similar to Twitter's h

FlutterCandies 357 Dec 27, 2022
💙 Google Classroom Clone using Flutter, GCP

Introduction ?? Classroom is a Google Classroom clone built using ?? Flutter. Before we start, you can take a look at the app: Screenshots ?? Key Feat

Sanjeev Madhav 20 Dec 14, 2022
High-level interfaces to Google Cloud Platform APIs

Google Cloud Platform support package (gcloud) The gcloud package provides a high level "idiomatic Dart" interface to some of the most widely used Goo

Dart 89 Dec 13, 2022
✨A clean and lightweight loading/toast widget for Flutter, easy to use without context, support iOS、Android and Web

Flutter EasyLoading English | 简体中文 Live Preview ?? https://nslog11.github.io/flutter_easyloading Installing Add this to your package's pubspec.yaml fi

nslog11 1k Jan 9, 2023
This repository demonstrates use of various widgets in flutter and tricks to create beautiful UI elements in flutter for Android and IOS

AwesomeFlutterUI The purpose of this repository is to demonstrate the use of different widgets and tricks in flutter and how to use them in your proje

Subir Chakraborty 132 Nov 13, 2022
A collection of Screens and attractive UIs built with Flutter ready to be used in your applications. No external libraries are used. Just download, add to your project and use.

Flutter Screens A collection of Login Screens, Buttons, Loaders and Widgets with attractive UIs, built with Flutter, ready to be used in your applicat

Samarth Agarwal 5k Dec 31, 2022
A flutter package which contains a collection of some cool and beautiful effects; support android and ios

flutter effects A flutter package which contains a collection of some cool and beautiful effects; support android and ios . Screenshot type support ch

大海豚 462 Jan 3, 2023
Flexible and easy to use page transitions.

flutter_villains What are heroes without villains? (Profile image from: https://unsplash.com/photos/pAs4IM6OGWI) Check out the article. What are villa

Norbert Kozsir 356 Dec 12, 2022
🔔 A flutter package to create cool and beautiful text animations. [Flutter Favorite Package]

Animated Text Kit A flutter package which contains a collection of some cool and awesome text animations. Recommended package for text animations in C

Ayush Agarwal 1.4k Jan 6, 2023
Easily add staggered animations to your ListView, GridView, Column and Row children.

Flutter Staggered Animations Easily add staggered animations to your ListView, GridView, Column and Row children as shown in Material Design guideline

null 1.2k Jan 6, 2023
Fun canvas animations in Flutter based on time and math functions.

funvas Flutter package that allows creating canvas animations based on time and math (mostly trigonometric) functions. The name "funvas" is based on F

null 472 Jan 9, 2023
A widget for stacking cards, which users can swipe horizontally and vertically with beautiful animations.

A widget for stacking cards, which users can swipe horizontally and vertically with beautiful animations.

HeavenOSK 97 Jan 6, 2023
A catalog of beautiful, reusable and elegant animations

Animations Catalog The goal of this project is to catalog and build multiple animation patterns with flutter. Budget App Animation Harley Swipe To Enl

null 3 Sep 6, 2021
Beautiful Animated ListView and GridView

staggered_animated_listview Beautiful Animated ListView and GridView Online Preview Getting Started This project is a starting point for a Flutter app

Elyas Sekhavati Nia 1 Dec 11, 2021
A package to create nice and smooth animations for flutter

animation_director A package to create nice and smooth animations for flutter Introduction A simple package to build beautiful and smooth animations f

null 10 Nov 28, 2022
An awesome list that curates the best Flutter libraries, tools, tutorials, articles and more.

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase. If you appr

Robert Felker 44.6k Dec 30, 2022
A Flutter package for a quick and handy giffy dialog.

?? Giffy Dialogs A beautiful and custom alert dialog for flutter highly inspired from FancyAlertDialog-Android. The source code is 100% Dart, and ever

Sahil Kumar 626 Dec 29, 2022
a widget provided to the flutter scroll component drop-down refresh and pull up load.

flutter_pulltorefresh Intro a widget provided to the flutter scroll component drop-down refresh and pull up load.support android and ios. If you are C

Jpeng 2.5k Jan 5, 2023