Skip to content

Instantly share code, notes, and snippets.

View jtlapp's full-sized avatar

Joe Lapp jtlapp

View GitHub Profile
@jtlapp
jtlapp / one-platform-api-multi-langs.md
Last active August 16, 2019 16:59
Looking for one mobile platform API in multiple languages

Is there a single mobile OS/UI abstraction implemented for both Swift and Java that makes cross platform development largely a matter of porting between languages, not also porting between platform APIs?

I'm researching my options for the cross platform development of mobile apps. Most solutions take an approach in which code is shared across platforms. I'm instead looking for a pair of libraries written for Swift and Java that have identical (or nearly identical APIs), except for programming language.

That is, the framework provides an API that is independent of the underlying OS, as React Native, Flutter, and Xamarin already do. But instead of providing these frameworks in only one programming language, it provides the framework in multiple programming languages. The framework provides the class names, method names, property names, constant names. As much as possible, these names would be the same across the implementations for each programming language.

The developer then only has to learn one platfor

@jtlapp
jtlapp / inherited_static.dart
Created September 11, 2019 04:06
Flutter InheritedWidget sharing static state
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
@jtlapp
jtlapp / provide_static.dart
Created September 11, 2019 04:09
Flutter Provider sharing static state
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
@jtlapp
jtlapp / inherited_counter.dart
Last active February 12, 2021 13:31
Counter app implemented with InheritedWidget
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyHomePage(),
@jtlapp
jtlapp / changenotifierprovider_counter.dart
Last active December 3, 2022 15:32
Counter app implemented with ChangeNotifierProvider
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
@jtlapp
jtlapp / default_flutter_app.dart
Created September 14, 2019 03:33
Default increment app that the Flutter plugin generates
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
@jtlapp
jtlapp / futureprovider_example.dart
Created September 18, 2019 04:07
FutureProvider example
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
const appTitle = 'FutureProvider Demo';
@jtlapp
jtlapp / streamprovider_example.dart
Created September 18, 2019 05:05
StreamProvider example
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
const appTitle = 'StreamProvider Demo';
@jtlapp
jtlapp / provider_state_counter.dart
Created September 18, 2019 13:53
Counter app implemented with provider and StatefulWidget
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
@jtlapp
jtlapp / valuelistenerprovider_example.dart
Created September 19, 2019 04:23
ValueListenerProvider example
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() => runApp(MyApp());
class CountDown extends ValueNotifier<int> {
CountDown(int downFrom) : super(downFrom) {
scheduleDecrement();
}