Benjamin Arhen
3 years ago
35 changed files with 1544 additions and 806 deletions
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Binary file not shown.
@ -0,0 +1,7 @@ |
|||
{ |
|||
"file_generated_by": "FlutterFire CLI", |
|||
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory", |
|||
"GOOGLE_APP_ID": "1:280510379185:ios:52af12a619d5443119de90", |
|||
"FIREBASE_PROJECT_ID": "teso-ghana", |
|||
"GCM_SENDER_ID": "280510379185" |
|||
} |
@ -0,0 +1,72 @@ |
|||
// File generated by FlutterFire CLI. |
|||
// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members |
|||
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; |
|||
import 'package:flutter/foundation.dart' |
|||
show defaultTargetPlatform, kIsWeb, TargetPlatform; |
|||
|
|||
/// Default [FirebaseOptions] for use with your Firebase apps. |
|||
/// |
|||
/// Example: |
|||
/// ```dart |
|||
/// import 'firebase_options.dart'; |
|||
/// // ... |
|||
/// await Firebase.initializeApp( |
|||
/// options: DefaultFirebaseOptions.currentPlatform, |
|||
/// ); |
|||
/// ``` |
|||
class DefaultFirebaseOptions { |
|||
static FirebaseOptions get currentPlatform { |
|||
if (kIsWeb) { |
|||
throw UnsupportedError( |
|||
'DefaultFirebaseOptions have not been configured for web - ' |
|||
'you can reconfigure this by running the FlutterFire CLI again.', |
|||
); |
|||
} |
|||
switch (defaultTargetPlatform) { |
|||
case TargetPlatform.android: |
|||
return android; |
|||
case TargetPlatform.iOS: |
|||
return ios; |
|||
case TargetPlatform.macOS: |
|||
throw UnsupportedError( |
|||
'DefaultFirebaseOptions have not been configured for macos - ' |
|||
'you can reconfigure this by running the FlutterFire CLI again.', |
|||
); |
|||
case TargetPlatform.windows: |
|||
throw UnsupportedError( |
|||
'DefaultFirebaseOptions have not been configured for windows - ' |
|||
'you can reconfigure this by running the FlutterFire CLI again.', |
|||
); |
|||
case TargetPlatform.linux: |
|||
throw UnsupportedError( |
|||
'DefaultFirebaseOptions have not been configured for linux - ' |
|||
'you can reconfigure this by running the FlutterFire CLI again.', |
|||
); |
|||
default: |
|||
throw UnsupportedError( |
|||
'DefaultFirebaseOptions are not supported for this platform.', |
|||
); |
|||
} |
|||
} |
|||
|
|||
static const FirebaseOptions android = FirebaseOptions( |
|||
apiKey: 'AIzaSyAHBguF6oqPEq7em1vLrh_NP2LoPuabe6o', |
|||
appId: '1:280510379185:android:b778de8dca1cf49219de90', |
|||
messagingSenderId: '280510379185', |
|||
projectId: 'teso-ghana', |
|||
databaseURL: 'https://teso-ghana-default-rtdb.firebaseio.com', |
|||
storageBucket: 'teso-ghana.appspot.com', |
|||
); |
|||
|
|||
static const FirebaseOptions ios = FirebaseOptions( |
|||
apiKey: 'AIzaSyCBDtZO2_Z5JjrNj1TocK6YAlk_wDbzZHs', |
|||
appId: '1:280510379185:ios:52af12a619d5443119de90', |
|||
messagingSenderId: '280510379185', |
|||
projectId: 'teso-ghana', |
|||
databaseURL: 'https://teso-ghana-default-rtdb.firebaseio.com', |
|||
storageBucket: 'teso-ghana.appspot.com', |
|||
androidClientId: '280510379185-0shp8sia3i5m589bov645t3kuddb1032.apps.googleusercontent.com', |
|||
iosClientId: '280510379185-67vianhh973klriv75ip2tb9cf8ibitl.apps.googleusercontent.com', |
|||
iosBundleId: 'com.tesoapp', |
|||
); |
|||
} |
@ -0,0 +1,232 @@ |
|||
// import 'dart:math' as math; |
|||
// import 'package:flutter/material.dart'; |
|||
|
|||
// @immutable |
|||
// class ExpandableFab extends StatefulWidget { |
|||
// const ExpandableFab({ |
|||
// super.key, |
|||
// this.initialOpen, |
|||
// required this.distance, |
|||
// required this.children, |
|||
// }); |
|||
|
|||
// final bool? initialOpen; |
|||
// final double distance; |
|||
// final List<Widget> children; |
|||
|
|||
// @override |
|||
// _ExpandableFabState createState() => _ExpandableFabState(); |
|||
// } |
|||
|
|||
// class _ExpandableFabState extends State<ExpandableFab> |
|||
// with SingleTickerProviderStateMixin { |
|||
// late final AnimationController _controller; |
|||
// late final Animation<double> _expandAnimation; |
|||
// bool _open = false; |
|||
|
|||
// @override |
|||
// void initState() { |
|||
// super.initState(); |
|||
// _open = widget.initialOpen ?? false; |
|||
// _controller = AnimationController( |
|||
// value: _open ? 1.0 : 0.0, |
|||
// duration: const Duration(milliseconds: 250), |
|||
// vsync: this, |
|||
// ); |
|||
// _expandAnimation = CurvedAnimation( |
|||
// curve: Curves.fastOutSlowIn, |
|||
// reverseCurve: Curves.easeOutQuad, |
|||
// parent: _controller, |
|||
// ); |
|||
// } |
|||
|
|||
// @override |
|||
// void dispose() { |
|||
// _controller.dispose(); |
|||
// super.dispose(); |
|||
// } |
|||
|
|||
// void _toggle() { |
|||
// setState(() { |
|||
// _open = !_open; |
|||
// if (_open) { |
|||
// _controller.forward(); |
|||
// } else { |
|||
// _controller.reverse(); |
|||
// } |
|||
// }); |
|||
// } |
|||
|
|||
// @override |
|||
// Widget build(BuildContext context) { |
|||
// return SizedBox.expand( |
|||
// child: Stack( |
|||
// alignment: Alignment.bottomRight, |
|||
// clipBehavior: Clip.none, |
|||
// children: [ |
|||
// _buildTapToCloseFab(), |
|||
// ..._buildExpandingActionButtons(), |
|||
// _buildTapToOpenFab(), |
|||
// ], |
|||
// ), |
|||
// ); |
|||
// } |
|||
|
|||
// Widget _buildTapToCloseFab() { |
|||
// return SizedBox( |
|||
// width: 56.0, |
|||
// height: 56.0, |
|||
// child: Center( |
|||
// child: Material( |
|||
// shape: const CircleBorder(), |
|||
// clipBehavior: Clip.antiAlias, |
|||
// elevation: 4.0, |
|||
// child: InkWell( |
|||
// onTap: _toggle, |
|||
// child: Padding( |
|||
// padding: const EdgeInsets.all(8.0), |
|||
// child: Icon( |
|||
// Icons.close, |
|||
// color: Theme.of(context).primaryColor, |
|||
// ), |
|||
// ), |
|||
// ), |
|||
// ), |
|||
// ), |
|||
// ); |
|||
// } |
|||
|
|||
// List<Widget> _buildExpandingActionButtons() { |
|||
// final children = <Widget>[]; |
|||
// final count = widget.children.length; |
|||
// final step = 90.0 / (count - 1); |
|||
// for (var i = 0, angleInDegrees = 0.0; |
|||
// i < count; |
|||
// i++, angleInDegrees += step) { |
|||
// children.add( |
|||
// _ExpandingActionButton( |
|||
// directionInDegrees: angleInDegrees, |
|||
// maxDistance: widget.distance, |
|||
// progress: _expandAnimation, |
|||
// child: widget.children[i], |
|||
// ), |
|||
// ); |
|||
// } |
|||
// return children; |
|||
// } |
|||
|
|||
// Widget _buildTapToOpenFab() { |
|||
// return IgnorePointer( |
|||
// ignoring: _open, |
|||
// child: AnimatedContainer( |
|||
// transformAlignment: Alignment.center, |
|||
// transform: Matrix4.diagonal3Values( |
|||
// _open ? 0.7 : 1.0, |
|||
// _open ? 0.7 : 1.0, |
|||
// 1.0, |
|||
// ), |
|||
// duration: const Duration(milliseconds: 250), |
|||
// curve: const Interval(0.0, 0.5, curve: Curves.easeOut), |
|||
// child: AnimatedOpacity( |
|||
// opacity: _open ? 0.0 : 1.0, |
|||
// curve: const Interval(0.25, 1.0, curve: Curves.easeInOut), |
|||
// duration: const Duration(milliseconds: 250), |
|||
// child: FloatingActionButton( |
|||
// onPressed: _toggle, |
|||
// child: const Icon(Icons.create), |
|||
// ), |
|||
// ), |
|||
// ), |
|||
// ); |
|||
// } |
|||
// } |
|||
|
|||
// @immutable |
|||
// class _ExpandingActionButton extends StatelessWidget { |
|||
// const _ExpandingActionButton({ |
|||
// required this.directionInDegrees, |
|||
// required this.maxDistance, |
|||
// required this.progress, |
|||
// required this.child, |
|||
// }); |
|||
|
|||
// final double directionInDegrees; |
|||
// final double maxDistance; |
|||
// final Animation<double> progress; |
|||
// final Widget child; |
|||
|
|||
// @override |
|||
// Widget build(BuildContext context) { |
|||
// return AnimatedBuilder( |
|||
// animation: progress, |
|||
// builder: (context, child) { |
|||
// final offset = Offset.fromDirection( |
|||
// directionInDegrees * (math.pi / 180.0), |
|||
// progress.value * maxDistance, |
|||
// ); |
|||
// return Positioned( |
|||
// right: 4.0 + offset.dx, |
|||
// bottom: 4.0 + offset.dy, |
|||
// child: Transform.rotate( |
|||
// angle: (1.0 - progress.value) * math.pi / 2, |
|||
// child: child!, |
|||
// ), |
|||
// ); |
|||
// }, |
|||
// child: FadeTransition( |
|||
// opacity: progress, |
|||
// child: child, |
|||
// ), |
|||
// ); |
|||
// } |
|||
// } |
|||
|
|||
// @immutable |
|||
// class ActionButton extends StatelessWidget { |
|||
// const ActionButton({ |
|||
// super.key, |
|||
// this.onPressed, |
|||
// required this.icon, |
|||
// }); |
|||
|
|||
// final VoidCallback? onPressed; |
|||
// final Widget icon; |
|||
|
|||
// @override |
|||
// Widget build(BuildContext context) { |
|||
// final theme = Theme.of(context); |
|||
// return Material( |
|||
// shape: const CircleBorder(), |
|||
// clipBehavior: Clip.antiAlias, |
|||
// color: theme.colorScheme.secondary, |
|||
// elevation: 4.0, |
|||
// child: IconButton( |
|||
// onPressed: onPressed, |
|||
// icon: icon, |
|||
// color: theme.colorScheme.secondary, |
|||
// ), |
|||
// ); |
|||
// } |
|||
// } |
|||
|
|||
// @immutable |
|||
// class FakeItem extends StatelessWidget { |
|||
// const FakeItem({ |
|||
// super.key, |
|||
// required this.isBig, |
|||
// }); |
|||
|
|||
// final bool isBig; |
|||
|
|||
// @override |
|||
// Widget build(BuildContext context) { |
|||
// return Container( |
|||
// margin: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 24.0), |
|||
// height: isBig ? 128.0 : 36.0, |
|||
// decoration: BoxDecoration( |
|||
// borderRadius: const BorderRadius.all(Radius.circular(8.0)), |
|||
// color: Colors.grey.shade300, |
|||
// ), |
|||
// ); |
|||
// } |
|||
// } |
Loading…
Reference in new issue