akhi07rx

3 min read

Dribbble App, No More


Dribbble app shutdown

Image source: Android Police

Dribbble recently announced that they’re sunsetting their iOS and Android apps.

I was genuinely sad to hear the news.

Over the years, Dribbble was one of the places I would visit whenever I needed a bit of design inspiration. Whether I was working on a small project or just browsing out of curiosity, it was always interesting to see how other people approached UI design.

I’m not a designer by any means, but scrolling through Dribbble helped me understand things like layout, spacing, typography, colors, and the small details that make an interface feel polished.

For most people this probably isn’t a huge loss. Modern browsers can already install websites as apps, and the Dribbble website itself works perfectly fine.

Still, I liked having the dedicated app.

So, mostly for the memories, I decided to create a small Flutter app for my old Android device.

It’s nothing fancy. In fact, it’s just a simple WebView that opens the Dribbble website.

I know it isn’t really needed, but sometimes projects don’t need a practical purpose. Sometimes they’re just a way of keeping a small piece of something you enjoyed around.

§main.dart

import 'package:flutter/material.dart';
import 'package:project_dribble/dribble_web.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: const WebViewEx(),
    );
  }
}

§lib/dribble_web.dart

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class WebViewEx extends StatefulWidget {
  const WebViewEx({Key? key}) : super(key: key);

  @override
  _WebViewExState createState() => _WebViewExState();
}

class _WebViewExState extends State<WebViewEx> {
  late final WebViewController _controller;

  @override
  void initState() {
    super.initState();
    _controller = WebViewController()
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      ..loadRequest(Uri.parse("https://dribbble.com/"));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: WebViewWidget(controller: _controller),
      ),
    );
  }
}

§Source Code

The complete source code is available on my GitHub:

§Final Thoughts

The app itself is tiny.

It doesn’t add any new features, and it certainly isn’t something the world needs. Modern browsers already do a great job of turning websites into installable apps.

Still, Dribbble was one of those websites that I kept coming back to over the years. It helped me discover new ideas, learn from other people’s work, and appreciate good interface design.

This tiny Flutter app isn’t meant to solve a problem. It’s simply a small reminder of a website that inspired me over the years, living on an old phone.

:)