Commit 7488eaec by danielroek

Revert "Added Baseflow plugin template"

This reverts commit b428726e.
parent b428726e
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:permission_handler_example/template/globals.dart';
void main() {
runApp(BaseflowPluginExample());
}
class BaseflowPluginExample extends StatelessWidget { void main() => runApp(MyApp());
final MaterialColor themeMaterialColor =
createMaterialColor(const Color.fromRGBO(48, 49, 60, 1));
/// Example Flutter Application demonstrating the functionality of the
/// Permission Handler plugin.
class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MaterialApp( return MaterialApp(
title: 'Baseflow ${Globals.pluginName}', home: Scaffold(
theme: ThemeData( appBar: AppBar(
accentColor: Colors.white60, title: const Text('Plugin example app'),
backgroundColor: const Color.fromRGBO(48, 49, 60, 0.8), actions: <Widget>[
buttonTheme: ButtonThemeData( IconButton(
buttonColor: themeMaterialColor.shade500, icon: const Icon(Icons.settings),
disabledColor: themeMaterialColor.withRed(200), onPressed: () async {
splashColor: themeMaterialColor.shade50, var hasOpened = openAppSettings();
textTheme: ButtonTextTheme.primary, debugPrint('App Settings opened: ' + hasOpened.toString());
), },
bottomAppBarColor: const Color.fromRGBO(57, 58, 71, 1), )
hintColor: themeMaterialColor.shade500, ],
primarySwatch: createMaterialColor(const Color.fromRGBO(48, 49, 60, 1)),
textTheme: TextTheme(
bodyText1: TextStyle(
color: Colors.white,
fontSize: 16,
height: 1.3,
),
bodyText2: TextStyle(
color: Colors.white,
fontSize: 18,
height: 1.2,
),
button: TextStyle(color: Colors.white),
headline1: TextStyle(
color: Colors.white,
fontSize: 18,
),
), ),
visualDensity: VisualDensity.adaptivePlatformDensity, body: Center(
inputDecorationTheme: const InputDecorationTheme( child: ListView(
fillColor: Color.fromRGBO(37, 37, 37, 1), children: Permission.values
filled: true, .where((Permission permission) {
if (Platform.isIOS) {
return permission != Permission.unknown &&
permission != Permission.sms &&
//permission != Permission.storage &&
permission != Permission.ignoreBatteryOptimizations &&
permission != Permission.accessMediaLocation;
} else {
return permission != Permission.unknown &&
permission != Permission.mediaLibrary &&
permission != Permission.photos &&
permission != Permission.reminders;
}
})
.map((permission) => PermissionWidget(permission))
.toList()),
), ),
), ),
home: MyHomePage(title: 'Baseflow ${Globals.pluginName} example app'),
); );
} }
}
static MaterialColor createMaterialColor(Color color) { /// Permission widget which displays a permission and allows users to request
List strengths = <double>[.05]; /// the permissions.
Map swatch = <int, Color>{}; class PermissionWidget extends StatefulWidget {
final int r = color.red, g = color.green, b = color.blue; /// Constructs a [PermissionWidget] for the supplied [Permission].
const PermissionWidget(this._permission);
for (int i = 1; i < 10; i++) { final Permission _permission;
strengths.add(0.1 * i);
} @override
strengths.forEach((strength) { _PermissionState createState() => _PermissionState(_permission);
final double ds = 0.5 - strength;
swatch[(strength * 1000).round()] = Color.fromRGBO(
r + ((ds < 0 ? r : (255 - r)) * ds).round(),
g + ((ds < 0 ? g : (255 - g)) * ds).round(),
b + ((ds < 0 ? b : (255 - b)) * ds).round(),
1,
);
});
return MaterialColor(color.value, swatch);
}
} }
class MyHomePage extends StatefulWidget { class _PermissionState extends State<PermissionWidget> {
MyHomePage({Key key, this.title}) : super(key: key); _PermissionState(this._permission);
final String title; final Permission _permission;
PermissionStatus _permissionStatus = PermissionStatus.undetermined;
@override @override
_MyHomePageState createState() => _MyHomePageState(); void initState() {
} super.initState();
class _MyHomePageState extends State<MyHomePage> { _listenForPermissionStatus();
static final PageController _pageController = PageController(initialPage: 0); }
int currentPage = 0;
void _listenForPermissionStatus() async {
final status = await _permission.status;
setState(() => _permissionStatus = status);
}
Color getPermissionColor() {
switch (_permissionStatus) {
case PermissionStatus.denied:
return Colors.red;
case PermissionStatus.granted:
return Colors.green;
default:
return Colors.grey;
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return ListTile(
appBar: AppBar( title: Text(_permission.toString()),
backgroundColor: Theme.of(context).bottomAppBarColor, subtitle: Text(
title: Center( _permissionStatus.toString(),
child: Image.asset( style: TextStyle(color: getPermissionColor()),
'res/images/baseflow_logo_def_light-02.png',
width: 140,
),
), ),
actions: <Widget>[ trailing: IconButton(
IconButton( icon: const Icon(Icons.info),
icon: const Icon(Icons.settings), onPressed: () {
color: Colors.white, checkServiceStatus(context, _permission);
onPressed: () async { }),
var hasOpened = openAppSettings(); onTap: () {
debugPrint('App Settings opened: ' + hasOpened.toString()); requestPermission(_permission);
}, },
)
],
),
backgroundColor: Theme.of(context).backgroundColor,
body: PageView(
controller: _pageController,
children: Globals.pages,
onPageChanged: (page) {
setState(() {
currentPage = page;
});
},
),
bottomNavigationBar: _bottomAppBar(),
); );
} }
BottomAppBar _bottomAppBar() { void checkServiceStatus(BuildContext context, Permission permission) async {
return BottomAppBar( Scaffold.of(context).showSnackBar(SnackBar(
elevation: 5, content: Text((await permission.status).toString()),
color: Theme.of(context).bottomAppBarColor, ));
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: List.unmodifiable(() sync* {
for (int i = 0; i < Globals.pages.length; i++) {
yield Expanded(
child: IconButton(
iconSize: 30,
icon: Icon(Globals.icons.elementAt(i)),
color: _bottomAppBarIconColor(i),
onPressed: () => _animateToPage(i),
),
);
}
}()),
),
);
} }
void _animateToPage(int page) { Future<void> requestPermission(Permission permission) async {
_pageController.animateToPage(page, final status = await permission.request();
duration: const Duration(milliseconds: 200), curve: Curves.linear);
}
Color _bottomAppBarIconColor(int page) { setState(() {
return currentPage == page ? Colors.white : Theme.of(context).accentColor; print(status);
_permissionStatus = status;
print(_permissionStatus);
});
} }
} }
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'dart:io';
import 'package:permission_handler_example/plugin_example/permission_widget.dart';
/// ListView containing permissions
class PermissionList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: ListView(
children: Permission.values
.where((Permission permission) {
if (Platform.isIOS) {
return permission != Permission.unknown &&
permission != Permission.sms &&
//permission != Permission.storage &&
permission != Permission.ignoreBatteryOptimizations &&
permission != Permission.accessMediaLocation;
} else {
return permission != Permission.unknown &&
permission != Permission.mediaLibrary &&
permission != Permission.photos &&
permission != Permission.reminders;
}
})
.map((permission) => PermissionWidget(permission))
.toList()),
);
}
}
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
/// Permission widget which displays a permission and allows users to request
/// the permissions.
class PermissionWidget extends StatefulWidget {
/// Constructs a [PermissionWidget] for the supplied [Permission].
const PermissionWidget(this._permission);
final Permission _permission;
@override
_PermissionState createState() => _PermissionState(_permission);
}
class _PermissionState extends State<PermissionWidget> {
_PermissionState(this._permission);
final Permission _permission;
PermissionStatus _permissionStatus = PermissionStatus.undetermined;
@override
void initState() {
super.initState();
_listenForPermissionStatus();
}
void _listenForPermissionStatus() async {
final status = await _permission.status;
setState(() => _permissionStatus = status);
}
Color getPermissionColor() {
switch (_permissionStatus) {
case PermissionStatus.denied:
return Colors.red;
case PermissionStatus.granted:
return Colors.green;
default:
return Colors.grey;
}
}
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(
_permission.toString(),
style: Theme.of(context).textTheme.bodyText1,
),
subtitle: Text(
_permissionStatus.toString(),
style: TextStyle(color: getPermissionColor()),
),
trailing: IconButton(
icon: const Icon(
Icons.info,
color: Colors.white,
),
onPressed: () {
checkServiceStatus(context, _permission);
}),
onTap: () {
requestPermission(_permission);
},
);
}
void checkServiceStatus(BuildContext context, Permission permission) async {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text((await permission.status).toString()),
));
}
Future<void> requestPermission(Permission permission) async {
final status = await permission.request();
setState(() {
print(status);
_permissionStatus = status;
print(_permissionStatus);
});
}
}
import 'dart:core';
import 'package:flutter/material.dart';
import 'package:permission_handler_example/plugin_example/permission_list.dart';
import 'info_page.dart';
/// Globals for example app template
class Globals {
/// Plugin Name
static const String pluginName = 'CachedNetworkImage';
/// Github URL to plugin
static const String githubURL =
'https://github.com/Baseflow/flutter_cached_network_image/';
/// Baseflow URL
static const String baseflowURL = 'https://baseflow.com';
/// Pub.dev link to plugin
static const String pubDevURL =
'https://pub.dev/packages/cached_network_image';
/// Application wide default horizontal padding
static const EdgeInsets defaultHorizontalPadding =
EdgeInsets.symmetric(horizontal: 24);
/// Application wide default horizontal padding
static const EdgeInsets defaultVerticalPadding =
EdgeInsets.symmetric(vertical: 24);
/// List of icons for BottomAppBar
static final icons = [
Icons.list,
Icons.info_outline,
];
/// List of pages in BottomAppBar
static final pages = [
PermissionList(),
InfoPage(),
];
}
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:url_launcher/url_launcher.dart';
import 'globals.dart';
/// Page containing Baseflow information
class InfoPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SizedBox.expand(
child: Align(
alignment: Alignment.bottomCenter,
child: SingleChildScrollView(
child: Padding(
padding: Globals.defaultHorizontalPadding +
Globals.defaultVerticalPadding,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Align(
alignment: Alignment.centerLeft,
child: Image.asset(
'res/images/poweredByBaseflowLogoLight@3x.png',
width: 250,
alignment: Alignment.centerLeft,
),
),
const Padding(
padding: EdgeInsets.symmetric(vertical: 24),
),
Text(
'This app showcases the possibilities of the ${Globals.pluginName} plugin, powered by Baseflow. '
'This plugin is available as open source project on Github. \n\n'
'Need help with integrating functionalities within your own apps? Contact us at hello@baseflow.com',
style: Theme.of(context).textTheme.bodyText1,
),
const Padding(
padding: EdgeInsets.symmetric(vertical: 8),
),
_launcherRaisedButton(
'Find us on Github',
Globals.githubURL,
context,
),
_launcherRaisedButton(
'Find us on pub.dev',
Globals.pubDevURL,
context,
),
_launcherRaisedButton(
'Visit baseflow.com',
Globals.baseflowURL,
context,
),
const Padding(
padding: EdgeInsets.only(bottom: 30),
),
],
),
),
),
),
);
}
Widget _launcherRaisedButton(String text, String url, BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width,
height: 50,
margin: const EdgeInsets.only(top: 24.0),
alignment: Alignment.center,
child: SizedBox.expand(
child: RaisedButton(
textTheme: Theme.of(context).buttonTheme.textTheme,
shape:
RoundedRectangleBorder(borderRadius: BorderRadius.circular(30.0)),
padding: const EdgeInsets.all(8),
child: Text(text),
onPressed: () => _launchURL(url),
),
),
);
}
Future<void> _launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}
...@@ -15,12 +15,5 @@ dev_dependencies: ...@@ -15,12 +15,5 @@ dev_dependencies:
permission_handler: permission_handler:
path: ../ path: ../
url_launcher: ^5.4.11
cupertino_icons: ^0.1.3
flutter: flutter:
uses-material-design: true uses-material-design: true
assets:
- res/images/baseflow_logo_def_light-02.png
- res/images/poweredByBaseflowLogoLight@3x.png
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment