►
Description
Improving experiences in Flutter with gRPC by Fré Dumazy, Senior App Developer at Duo nv in Bruges, Belgium
In this demo Fré will explain how choosing for gRPC in their Flutter app created better experiences for both the user as the developer. Fré will also focus on the challenges they had as first time users of gRPC and opportunities they see in the future. The initial version of the app can be found here:
https://apps.apple.com/us/app/lettr/id1518612885
https://play.google.com/store/apps/details?id=be.genscom.joehoe
A
Perfect
welcome
everybody
to
the
grpc
community
meetup
and
apologies
for
the
hiccups.
With
the
with
the
link
to
the
event.
We
are
going
to
go
ahead
and
get
started.
Fred
er
dumasi
has
a
demo
a
presentation
for
us
so
and
this
is
being
recorded
as
you
know,
so
this
is
going
to
be
available
on
grpc
youtube
channel
after
the
event.
B
All
right
so
hello,
everyone,
I
will
be
presenting
a
demo
of
how
we
were
able
to
use
grpc
in
our
latest
flutter
app
to
actually
improve
upon
two
types
of
experiences.
B
Those
are
actually
both
the
user
experience
and
also
the
developer
experience.
B
So
a
quick
note
about
me,
so
my
name
is
free,
I'm
an
app
developer
for
about
eight
years,
focusing
mostly
on
android
and
then
afterwards,
starting
to
move
towards
different
platforms,
and
that's
how
I
ended
up
starting
to
use
flutter
since
almost
three
years
ago,
as
the
description
mentioned,
I
was
working
at
duo,
but
I
actually
just
recently
changed
jobs
and
I'm
working
at
in
the
pocket.
Now
the
case
that
I'll
be
presenting
today
was
one
of
the
apps
that
we
created
at
duo,
which
is
a
software
agency.
B
So
there's
two
specific
things
that
I
want
to
mention
about
how
flutter
actually
works,
it's
a
framework
that
is
based
on
composing
several
widgets
and
with
that
actually
creating
your
your
app.
It
has
a
declarative,
state-based
ui,
which
actually
makes
it
really
easy
to
update
your
ui
and
to
to
manage
it.
It's
actually
very
similar
to
react
just
to
give
a
quick
example
of
how
flutter
actually
looks
here.
B
You
can
see
the
the
widget
tree,
which
is
a
composition
of
several
of
these
widgets
which
allow
you
to
create
these
apps,
so
these
widgets
are
actually
building
blocks
that
is
provided
by
the
framework.
B
But
with
those
building
blocks,
you
can
create
your
own
type
of
widgets,
just
like
this
hello,
grpc
widget,
that
you
can
see
here
as
well,
so
over
to
to
the
case
that
I
wanted
to
present
so
about
a
year
ago,
one
of
our
clients
at
duo
came
came
to
us
with
a
question
to
create
a
platform
that
would
allow
users
to
create
their
own
newspapers
with
an
app.
B
B
Now,
one
of
the
important
use
cases
that
they
had
in
mind
was
families
creating
these
these
newspapers
for
a
relative
of
them
who
might
be
living
in
a
retirement
home
and
who
they
want
to
keep
up
to
date
with
things
that
are
happening
in
their
lives.
B
So
we
have
all
these
people
working
together
on
the
same
newspaper
that
they
create,
but
it's
not
just
that
they're
going
to
make
this
remote
they're,
actually
in
a
lot
of
cases,
because
it's
mostly
done
within
a
family,
they're
gonna
be
in
person
so
they're
they
might
be
standing
next
to
each
other,
adding
working
together
on
this
newspaper
but
all
on
their
own
personal
devices.
B
So
on
one
hand
to
to
create
these
real-time
updates,
we
had
our
our
app
that
was
going
to
build
to
be
built
in
flutter,
which
uses
dart.
It
has
that
declarative
state
based
ui
that
I
mentioned
before,
but
one
of
the
specific
features
that
dart
has
and
that
flutter
can
take
advantage
of
is
streams.
B
B
Now
we
didn't
have
any
experience
with
grpc
before,
but
it
checked
the
boxes
that
we
needed,
so
we
had
long
long
lived
streaming
and
we
had
support
for
both
dart
and
java,
but
actually
one
of
the
the
best
things
that
came
with
that
were
actually
the
the
protobell
buffers.
B
So
we
have,
we
didn't
use
them
before
in
any
of
our
applications,
and
this
was
the
the
first
time
we
we
worked
with
them,
but
it
was
just
amazing
how
easily
it
was
just
to
have
your
source
for
generating
your
required
codes,
as
well
as
your
documentation
within
the
same
files.
B
By
keeping
these
actually
in
a
separate
repo,
it
was
easy
for
other
people
to
contribute
to
to
it,
for
our
developers,
at
least,
and
to
get
a
discussion
started
to
to
have
versioning
and
in
our
api
contract
and
also
to
start
discussions
and
and
merge
requests.
So
people
could
actually
have
certain
proposals
on
how
the
api
should
look.
B
So
now,
how
do
we
use
those
real-time
updates,
mostly
like
in
the
newspaper
area
of
the
app?
You
would
see
multiple
updates
come
in
when
something
changed.
B
B
So
every
time
we
actually
were
streaming,
the
the
real
state
of
that
newspaper
and
through
grpc,
we
just
send
the
whole
object
over.
We
didn't
use
like
small
changes
that
we
sent
and
let
the
client
rebuild
the
state
on
his
side,
but
because
of
how
fast
grpc
was
working,
it
was
actually
manageable
to
have
these
large
objects.
B
Just
send
over
the
wire
to
our
client
apps.
Now
we
also
started
noticing
other
areas
where
we
could
use
these
real-time
updates
and,
for
example,
the
checkout
confirmation,
while
payment
was
being
processed,
also
the
contributors
area
again
from
the
perspective
of
working
together
in
person
on
a
newspaper.
B
B
Now
there
were
quite
a
lot
of
challenges
to
this,
because
we
didn't
actually
have
any
previous
experience
with
the
technology,
so
it
changed
a
couple
of
things
within
our
tooling,
definitely
also
in
infrastructure
or
even
just
organizing
how
we
would
manage
those
protobuf
files,
but
eventually
it
went
quite
fine.
After
doing
some
initial
research
and
just
some
simple
proof
of
concepts,
we
didn't
even
finish
all
the
proof
of
concepts,
because
we
were
so
confident
like
this
is
going
so
well.
B
Let's
just
start
building
the
app
with
this
one
of
the
advantages
that
we
did
have,
though,
is
that
we
were
working
on
a
really
small
team,
so
we
had
two
app
developers
and
two
back-end
developers
and
we
were
always
working
at
the
same
time,
so
we
could
just
kind
of
bear
program
to
through
these
cases
and
get
to
know
the
technology
quite
well
like
that.
B
B
It
was
only
important
to
have
a
specific
nested
structure
that
we
had
to
maintain,
because
if
you
have
one
zone
that
needed
to
get
information
from
a
newspaper
you
couldn't
let
just
have
that
new-
that
zone
stream
a
newspaper
and
then
have
another
zone
stream,
the
same
newspaper
as
well.
We
had
to
move
that
up
to
a
specific
place
that
that
was
actually
gonna
serve
all
the
children
of
that
newspaper.
B
So
what
we
did
next
was
just
expose
the
data
through
the
widgets
down
the
tree,
so
we
would
only
end
up
with
one
stream
on
top
of
the
tree.
B
A
B
Now,
there's
a
few
challenges
that
we
didn't
have
right
now,
because
we
just
launched
the
first
version
of
this
app
and
we
we
still
need
to
see
in
the
future
how
it's
going
to
evolve,
but
there
will
be
definitely
a
challenge
in
versioning
and
breaking
changes,
because
it's
typical
for
apps
to
once
you
ship
them
they're
they're
out
there
and
you're,
not
sure
if
you're
gonna
be
able
to
to
update
them.
B
So
it's
really
important
to
monitor,
like
which
versions
of
your
app
are
still
in
use
and
then
look
which
practices
are
gonna,
be
the
best
to
avoid
having
breaking
changes.
B
Those
could
be
like
you,
your
ipad
versioning
is
definitely
one
that
we
we're
thinking
about,
but
just
to
be
sure,
we've
implemented
a
feature
as
well.
That
would
allow
us
to
enforce
the
user
to
update
their
version.
It's
a
really.
A
B
Initially
recently,
web
support
for
flutter
has
become
stable,
and
this
is
something
that
the
client
really
wants
to
have
to
have.
The
the
leather
app
also
run
in
the
browser,
but
unfortunately,
I
don't
think
grpc
supports
actually
has
full
browser
support.
There's
some
ways.
This
might
work
like
boxing
proxying
it
through
envoy,
or
we
might
even
have
to
switch
for
another
to
another
technology
for
supporting
the
web
client.
B
To
sum
up,
I
just
wanted
to
focus
on
one
specific
area
where
we
still
see
a
big
opportunity
in
grpc
to
improve
upon
a
certain
way
that
we,
we
manage
editing
zones
within
the
newspaper
right
now.
So
what
actually?
What
we
actually
want
to
avoid
is
that
multiple
users
could
start
editing
the
same
piece
of
the
of
a
newspaper
at
the
same
time,
because
that
would
create
conflicts.
B
So
what
happens
right
now
is
that
when
a
user
starts
to
edit
a
certain
zone,
it
add
requests
a
lock
on
its
own
and
it
does
that
every
two
minutes,
then,
when
it
actually
saves
his
changes,
we're
gonna
upload
those
changes
and
unlock
that
zone
again
for
other
contributors
to
also
work
in
that
area
of
the
newspaper
or
when
the
user
decides
to
to
close
the
editor
and
move
out
of
that
specific
zone.
B
We
just
ask
it
to
unlock
again,
but
maybe
user
might
forget
to
close
properly
or
he
kills
the
app
or
the
battery
dies,
so
just
to
make
sure
that
we're
not
that
locked
there.
We
remove
those
old
locks
like
every
five
minutes,
I'm
not
sure
about
the
numbers
anymore,
but
it
was
something
like
that,
and
this
is
where
we
see
like
a
really
big
opportunity
to
start
using
bi-directional
streaming
here.
B
B
Contributors,
but
more
than
that,
we
could
also
start
uploading
specific
changes
such
as
images
that
we
that
we
want
to
upload
and
use
it
within
that
zone
that
take
quite
a
while
to
to
upload
and
process.
We
could
actually
start
uploading
those
immediately
every
time
over
that
bi-directional
stream
as
well
and
just
apply
those
changes
on
safe
just
to
sum
up,
so
this
was
our
first
experience
using
grpc
within
a
flutter
app,
and
I
think
it's
a
great
match
for
flutter
on
mobile
platforms.
B
We're
gonna
have
to
see
how
it
will
end
up
be
being
on
the
web.
That
might
be
quite
a
lot
difficult
and
it's
super
easy
to
manage
once
we
had
things
set
up,
so
every
change
that
we
needed
to
apply
to
the
api
contract.
It
was
just
simply
changing
the
proto,
the
protocol
buffers
and
then
it
just
worked
like
magic.
B
Also,
we
see
a
lot
more
opportunities
that
we
could
use
grpc
and
flutter
for,
but
we
haven't
explored
all
of
them,
but
already
it
was
like
really
good
for
us,
so
that
sums
it
up
pretty
much.