Basic Mobile App Framework

This commit is contained in:
2021-01-23 11:57:07 -05:00
parent 997806b7f0
commit 28649bda73
19 changed files with 309 additions and 77 deletions

View File

@@ -1,40 +0,0 @@
import 'package:flutter/material.dart';
import 'package:imagini/screens/example2/components/body.dart';
import 'package:imagini/screens/example2/example2-bloc.dart';
import 'package:imagini/bloc/bloc-prov.dart';
class ExScreen2 extends StatefulWidget {
@override
_ExScreen2State createState() => _ExScreen2State();
}
class _ExScreen2State extends State<ExScreen2> {
Example2Bloc example2Bloc;
@override
void initState() {
super.initState();
example2Bloc = Example2Bloc();
}
@override
void dispose() {
example2Bloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: Example2Bloc(),
child: Scaffold(
appBar: AppBar(
title: Text("Second Screen"),
),
body: Body(),
),
);
}
}

View File

@@ -5,14 +5,14 @@ import 'package:imagini/models/contact.dart';
import 'package:flutter/material.dart';
import 'package:imagini/bloc/bloc.dart';
class Example2Bloc extends Bloc {
class GalleryBloc extends Bloc {
StreamSubscription _audioPlayerStateSubscription;
Stream<String> get example => _exampleSubject.stream;
Sink<String> get exampleSink => _exampleSubject.sink;
final StreamController<String> _exampleSubject = StreamController<String>();
Example2Bloc();
GalleryBloc();
void dispose() {
_exampleSubject.close();

View File

@@ -0,0 +1,45 @@
import 'package:flutter/material.dart';
import 'package:imagini/screens/gallery/components/body.dart';
import 'package:imagini/screens/gallery/gallery-bloc.dart';
import 'package:imagini/bloc/bloc-prov.dart';
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
class GalleryScreen extends StatefulWidget {
@override
_GalleryScreenState createState() => _GalleryScreenState();
}
class _GalleryScreenState extends State<GalleryScreen> {
GalleryBloc exampleBloc;
@override
void initState() {
super.initState();
exampleBloc = GalleryBloc();
}
@override
void dispose() {
exampleBloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: exampleBloc,
child: PlatformScaffold(
appBar: PlatformAppBar(
title: Text('Gallerys'),
cupertino: (_, __) => CupertinoNavigationBarData(
// Issue with cupertino where a bar with no transparency
// will push the list down. Adding some alpha value fixes it (in a hacky way)
backgroundColor: Colors.lightGreen.withAlpha(254),
),
),
body: Body(),
),
);
}
}

View File

@@ -6,10 +6,11 @@ class Body extends StatelessWidget {
return Center(
child: RaisedButton(
onPressed: () {
Navigator.pop(context);
// Go to Login Screen
Navigator.pushNamed(context, '/Gallery');
},
child: Text('Go back!'),
child: Text('Login'),
),
);
}
}
}

View File

@@ -5,14 +5,14 @@ import 'package:imagini/models/contact.dart';
import 'package:flutter/material.dart';
import 'package:imagini/bloc/bloc.dart';
class Example2Bloc extends Bloc {
class LoginBloc extends Bloc {
StreamSubscription _audioPlayerStateSubscription;
Stream<String> get example => _exampleSubject.stream;
Sink<String> get exampleSink => _exampleSubject.sink;
final StreamController<String> _exampleSubject = StreamController<String>();
Example2Bloc();
LoginBloc();
void dispose() {
_exampleSubject.close();

View File

@@ -1,37 +1,35 @@
import 'package:flutter/material.dart';
import 'package:imagini/screens/example2/components/body.dart';
import 'package:imagini/screens/example2/example2-bloc.dart';
import 'package:imagini/screens/login/components/body.dart';
import 'package:imagini/screens/login/login-bloc.dart';
import 'package:imagini/bloc/bloc-prov.dart';
class ExScreen2 extends StatefulWidget {
class LoginScreen extends StatefulWidget {
@override
_ExScreen2State createState() => _ExScreen2State();
_LoginScreenState createState() => _LoginScreenState();
}
class _ExScreen2State extends State<ExScreen2> {
Example2Bloc example2Bloc;
class _LoginScreenState extends State<LoginScreen> {
LoginBloc loginBloc;
@override
void initState() {
super.initState();
example2Bloc = Example2Bloc();
loginBloc = LoginBloc();
}
@override
void dispose() {
example2Bloc.dispose();
loginBloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: Example2Bloc(),
bloc: LoginBloc(),
child: Scaffold(
appBar: AppBar(
title: Text("Second Screen"),
title: Text("Login"),
),
body: Body(),
),

View File

@@ -6,10 +6,10 @@ class Body extends StatelessWidget {
return Center(
child: RaisedButton(
onPressed: () {
Navigator.pop(context);
Navigator.pushNamed(context, '/Upload');
},
child: Text('Go back!'),
child: Text('Page Two!'),
),
);
}
}
}

View File

@@ -5,14 +5,14 @@ import 'package:imagini/models/contact.dart';
import 'package:flutter/material.dart';
import 'package:imagini/bloc/bloc.dart';
class PhotoBloc extends Bloc {
class MeBloc extends Bloc {
StreamSubscription _audioPlayerStateSubscription;
Stream<String> get example => _exampleSubject.stream;
Sink<String> get exampleSink => _exampleSubject.sink;
final StreamController<String> _exampleSubject = StreamController<String>();
PhotoBloc();
MeBloc();
void dispose() {
_exampleSubject.close();

View File

@@ -1,22 +1,22 @@
import 'package:flutter/material.dart';
import 'package:imagini/screens/photo/components/body.dart';
import 'package:imagini/screens/photo/photo-bloc.dart';
import 'package:imagini/screens/me/components/body.dart';
import 'package:imagini/screens/me/me-bloc.dart';
import 'package:imagini/bloc/bloc-prov.dart';
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
class PhotoScreen extends StatefulWidget {
class MeScreen extends StatefulWidget {
@override
_PhotoScreenState createState() => _PhotoScreenState();
_MeScreenState createState() => _MeScreenState();
}
class _PhotoScreenState extends State<PhotoScreen> {
PhotoBloc exampleBloc;
class _MeScreenState extends State<MeScreen> {
MeBloc exampleBloc;
@override
void initState() {
super.initState();
exampleBloc = PhotoBloc();
exampleBloc = MeBloc();
}
@override
@@ -31,7 +31,7 @@ class _PhotoScreenState extends State<PhotoScreen> {
bloc: exampleBloc,
child: PlatformScaffold(
appBar: PlatformAppBar(
title: Text('Photos'),
title: Text('Mes'),
cupertino: (_, __) => CupertinoNavigationBarData(
// Issue with cupertino where a bar with no transparency
// will push the list down. Adding some alpha value fixes it (in a hacky way)

View File

@@ -0,0 +1,15 @@
import 'package:flutter/material.dart';
class Body extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: RaisedButton(
onPressed: () {
Navigator.pushNamed(context, '/Upload');
},
child: Text('Page Two!'),
),
);
}
}

View File

@@ -0,0 +1,20 @@
import 'dart:async';
import 'dart:ui';
import 'package:flutter/services.dart';
import 'package:imagini/models/contact.dart';
import 'package:flutter/material.dart';
import 'package:imagini/bloc/bloc.dart';
class SettingsBloc extends Bloc {
StreamSubscription _audioPlayerStateSubscription;
Stream<String> get example => _exampleSubject.stream;
Sink<String> get exampleSink => _exampleSubject.sink;
final StreamController<String> _exampleSubject = StreamController<String>();
SettingsBloc();
void dispose() {
_exampleSubject.close();
}
}

View File

@@ -0,0 +1,45 @@
import 'package:flutter/material.dart';
import 'package:imagini/screens/settings/components/body.dart';
import 'package:imagini/screens/settings/settings-bloc.dart';
import 'package:imagini/bloc/bloc-prov.dart';
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
class SettingsScreen extends StatefulWidget {
@override
_SettingsScreenState createState() => _SettingsScreenState();
}
class _SettingsScreenState extends State<SettingsScreen> {
SettingsBloc exampleBloc;
@override
void initState() {
super.initState();
exampleBloc = SettingsBloc();
}
@override
void dispose() {
exampleBloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: exampleBloc,
child: PlatformScaffold(
appBar: PlatformAppBar(
title: Text('Settings'),
cupertino: (_, __) => CupertinoNavigationBarData(
// Issue with cupertino where a bar with no transparency
// will push the list down. Adding some alpha value fixes it (in a hacky way)
backgroundColor: Colors.lightGreen.withAlpha(254),
),
),
body: Body(),
),
);
}
}

View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
class Body extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: RaisedButton(
onPressed: () {
// Back (popping)
// Navigator.pop(context);
// Go to Login Screen
Navigator.pushNamed(context, '/Login');
},
child: Text('Login'),
),
);
}
}

View File

@@ -0,0 +1,20 @@
import 'dart:async';
import 'dart:ui';
import 'package:flutter/services.dart';
import 'package:imagini/models/contact.dart';
import 'package:flutter/material.dart';
import 'package:imagini/bloc/bloc.dart';
class SplashBloc extends Bloc {
StreamSubscription _audioPlayerStateSubscription;
Stream<String> get example => _exampleSubject.stream;
Sink<String> get exampleSink => _exampleSubject.sink;
final StreamController<String> _exampleSubject = StreamController<String>();
SplashBloc();
void dispose() {
_exampleSubject.close();
}
}

View File

@@ -0,0 +1,38 @@
import 'package:flutter/material.dart';
import 'package:imagini/screens/splash/components/body.dart';
import 'package:imagini/screens/splash/splash-bloc.dart';
import 'package:imagini/bloc/bloc-prov.dart';
class SplashScreen extends StatefulWidget {
@override
_SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
SplashBloc splashBloc;
@override
void initState() {
super.initState();
splashBloc = SplashBloc();
}
@override
void dispose() {
splashBloc.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BlocProvider(
bloc: SplashBloc(),
child: Scaffold(
appBar: AppBar(
title: Text("First Screen"),
),
body: Body(),
),
);
}
}