remove flutter garbage
This commit is contained in:
parent
d78e6e3adb
commit
7599319721
31
Flutter.md
31
Flutter.md
|
@ -1,31 +0,0 @@
|
||||||
Flutter
|
|
||||||
=======
|
|
||||||
|
|
||||||
Async Speichern
|
|
||||||
===============
|
|
||||||
```
|
|
||||||
showDialog(context: context, barrierDismissible: false,
|
|
||||||
builder: (BuildContext context) { return AlertDialog(content: Text("Saving...")); });
|
|
||||||
await saveToSomething()
|
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
|
||||||
```
|
|
||||||
|
|
||||||
Async Laden initial
|
|
||||||
===================
|
|
||||||
* Initial nur den Loading Screen anzeigen
|
|
||||||
* in InitState das async-Laden aufrufen
|
|
||||||
* darin await LoadFromSomething()
|
|
||||||
* dann Navigator.pushReplacement zur Home-Route
|
|
||||||
|
|
||||||
Assets
|
|
||||||
======
|
|
||||||
* Ordner 'assets' anlegen
|
|
||||||
* in pubspec.yaml -> flutter: -> assets: -> - assets/foobar.jpg auflisten
|
|
||||||
|
|
||||||
Lokaler Package-Import
|
|
||||||
======================
|
|
||||||
* in pubspec.yaml unter dependencies den Namen des Package, dann den Pfad, z.B.:
|
|
||||||
dependencies:
|
|
||||||
myPackage:
|
|
||||||
path: ../myPackage
|
|
||||||
* Dann normal importieren, z.B. import"package:myPackage/file123.dart"
|
|
357
createFlutter
357
createFlutter
|
@ -1,357 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
if [ "$#" -ne 2 ]; then
|
|
||||||
echo "USAGE: $0 APP_NAME DESCRIPTION"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
PROJECT_HOME=~/AndroidStudioProjects
|
|
||||||
ORG_PATH="$PROJECT_HOME/defaultOrg"
|
|
||||||
KEY_PROPERTIES_PATH="$PROJECT_HOME/defaultKeyProperties"
|
|
||||||
|
|
||||||
appName="$1"
|
|
||||||
packageName=`echo "$appName" | tr ' ' '_' | tr '[:upper:]' '[:lower:]'`
|
|
||||||
description="$2"
|
|
||||||
|
|
||||||
echo "App Name: $appName"
|
|
||||||
echo "Package Name: $packageName"
|
|
||||||
echo "Description: $description"
|
|
||||||
|
|
||||||
|
|
||||||
if [[ -f "$ORG_PATH" ]]; then
|
|
||||||
org=`cat "$PROJECT_HOME/defaultOrg"`
|
|
||||||
else
|
|
||||||
echo "Could not find file with default org in $ORG_PATH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f "$KEY_PROPERTIES_PATH" ]]; then
|
|
||||||
keyProperties=`cat "$PROJECT_HOME/defaultKeyProperties"`
|
|
||||||
else
|
|
||||||
echo "Could not find file with default key properties in $KEY_PROPERTIES_PATH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
flutter create --android-language java --org "$org" "$packageName" || exit 1
|
|
||||||
|
|
||||||
cd "$packageName"
|
|
||||||
|
|
||||||
##########################
|
|
||||||
## append to .gitignore ##
|
|
||||||
##########################
|
|
||||||
|
|
||||||
echo "android/key.properties" >> .gitignore
|
|
||||||
|
|
||||||
git init
|
|
||||||
|
|
||||||
##################################
|
|
||||||
## generate empty launcher icon ##
|
|
||||||
##################################
|
|
||||||
|
|
||||||
convert -size 2048x2048 xc:white launcherIcon.png
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
|
||||||
## overwrite pubspec.yaml ##
|
|
||||||
############################
|
|
||||||
|
|
||||||
cat > pubspec.yaml <<EOF
|
|
||||||
name: $packageName
|
|
||||||
description: $description
|
|
||||||
|
|
||||||
version: 1.0.0+1
|
|
||||||
|
|
||||||
environment:
|
|
||||||
sdk: ">=2.2.2 <3.0.0"
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
flutter:
|
|
||||||
sdk: flutter
|
|
||||||
intl: ^0.15.7
|
|
||||||
shared_preferences: ^0.5.4+8
|
|
||||||
cupertino_icons: ^0.1.2
|
|
||||||
|
|
||||||
dev_dependencies:
|
|
||||||
flutter_test:
|
|
||||||
sdk: flutter
|
|
||||||
flutter_launcher_icons: "^0.7.3"
|
|
||||||
|
|
||||||
flutter_icons:
|
|
||||||
image_path: "launcherIcon.png"
|
|
||||||
android: true
|
|
||||||
ios: true
|
|
||||||
|
|
||||||
flutter:
|
|
||||||
uses-material-design: true
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#########################################
|
|
||||||
## generate key.properties for signing ##
|
|
||||||
#########################################
|
|
||||||
|
|
||||||
cat > android/key.properties <<EOF
|
|
||||||
$keyProperties
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
|
||||||
## overwrite build.gradle ##
|
|
||||||
############################
|
|
||||||
|
|
||||||
cat > android/app/build.gradle <<EOF
|
|
||||||
def localProperties = new Properties()
|
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
|
||||||
if (localPropertiesFile.exists()) {
|
|
||||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
|
||||||
localProperties.load(reader)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
|
||||||
if (flutterRoot == null) {
|
|
||||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
|
||||||
if (flutterVersionCode == null) {
|
|
||||||
flutterVersionCode = '1'
|
|
||||||
}
|
|
||||||
|
|
||||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
|
||||||
if (flutterVersionName == null) {
|
|
||||||
flutterVersionName = '1.0'
|
|
||||||
}
|
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
apply from: "\$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|
||||||
|
|
||||||
def keystoreProperties = new Properties()
|
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
|
||||||
if (keystorePropertiesFile.exists()) {
|
|
||||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 29
|
|
||||||
|
|
||||||
lintOptions {
|
|
||||||
disable 'InvalidPackage'
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
|
||||||
applicationId "$org.$packageName"
|
|
||||||
minSdkVersion 16
|
|
||||||
targetSdkVersion 29
|
|
||||||
versionCode flutterVersionCode.toInteger()
|
|
||||||
versionName flutterVersionName
|
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
|
||||||
}
|
|
||||||
|
|
||||||
signingConfigs {
|
|
||||||
release {
|
|
||||||
keyAlias keystoreProperties['keyAlias']
|
|
||||||
keyPassword keystoreProperties['keyPassword']
|
|
||||||
storeFile file(keystoreProperties['storeFile'])
|
|
||||||
storePassword keystoreProperties['storePassword']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
signingConfig signingConfigs.release
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flutter {
|
|
||||||
source '../..'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
testImplementation 'junit:junit:4.12'
|
|
||||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
|
||||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
#######################
|
|
||||||
## set android label ##
|
|
||||||
#######################
|
|
||||||
|
|
||||||
sed -i "s/android:label=\"$packageName\"/android:label=\"$appName\"/" android/app/src/main/AndroidManifest.xml
|
|
||||||
|
|
||||||
#####################
|
|
||||||
## empty README.md ##
|
|
||||||
#####################
|
|
||||||
cat > README.md <<EOF
|
|
||||||
# $appName
|
|
||||||
|
|
||||||
$description
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
#########################
|
|
||||||
## overwrite main.dart ##
|
|
||||||
#########################
|
|
||||||
cat > lib/main.dart <<EOF
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'screens/loading.dart';
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
runApp(MaterialApp(
|
|
||||||
debugShowCheckedModeBanner: false,
|
|
||||||
theme: ThemeData(
|
|
||||||
primarySwatch: Colors.blue,
|
|
||||||
),
|
|
||||||
home: Loading(),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
####################################
|
|
||||||
## create loading and home screen ##
|
|
||||||
####################################
|
|
||||||
|
|
||||||
mkdir lib/screens
|
|
||||||
|
|
||||||
cat > lib/screens/home.dart <<EOF
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
|
|
||||||
class Home extends StatefulWidget {
|
|
||||||
Home({Key key}) : super(key: key);
|
|
||||||
static const title = '$appName';
|
|
||||||
|
|
||||||
static void loadInitial(BuildContext context) async {
|
|
||||||
await Future.delayed(Duration.zero, () {});
|
|
||||||
// load some stuff here and await results
|
|
||||||
Navigator.pushReplacement(context,
|
|
||||||
MaterialPageRoute(builder: (context) => Home()));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void save(BuildContext context) async {
|
|
||||||
showDialog(context: context, barrierDismissible: false,
|
|
||||||
builder: (BuildContext context) { return AlertDialog(content: Text("Saving...")); });
|
|
||||||
await Future.delayed(Duration.zero, () {});
|
|
||||||
Navigator.of(context, rootNavigator: true).pop();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
_HomeState createState() => _HomeState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _HomeState extends State<Home> {
|
|
||||||
int state = 1;
|
|
||||||
|
|
||||||
void _changeState(int s) {
|
|
||||||
setState(() {
|
|
||||||
state = s;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> popupMenuItems = ["About"];
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
appBar: AppBar(
|
|
||||||
title: Text(Home.title),
|
|
||||||
actions: <Widget>[
|
|
||||||
PopupMenuButton<String>(
|
|
||||||
onSelected: (String value) => handleClick(context, value),
|
|
||||||
itemBuilder: (BuildContext context) {
|
|
||||||
return popupMenuItems.map((String choice) {
|
|
||||||
return PopupMenuItem<String>(
|
|
||||||
value: choice,
|
|
||||||
child: Text(choice),
|
|
||||||
);
|
|
||||||
}).toList();
|
|
||||||
},
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
body: Padding(
|
|
||||||
padding: const EdgeInsets.all(8.0),
|
|
||||||
child: ListView(children: [
|
|
||||||
Text("Lorem ipsum dolor sit amet"),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
void handleClick(BuildContext context, String value) {
|
|
||||||
switch (value) {
|
|
||||||
case 'About':
|
|
||||||
showLicensePage(context: context, applicationName: Home.title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
cat > lib/screens/loading.dart <<EOF
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
|
||||||
import 'home.dart';
|
|
||||||
|
|
||||||
class Loading extends StatefulWidget {
|
|
||||||
@override
|
|
||||||
_LoadingState createState() => _LoadingState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _LoadingState extends State<Loading> {
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
Home.loadInitial(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Scaffold(
|
|
||||||
body: Container(
|
|
||||||
child: Text("Loading..."),
|
|
||||||
alignment: Alignment.center,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
#####################
|
|
||||||
## create Makefile ##
|
|
||||||
#####################
|
|
||||||
|
|
||||||
cat > Makefile <<EOF
|
|
||||||
.PHONY: clean all launcherIcon
|
|
||||||
|
|
||||||
all: launcherIcon
|
|
||||||
flutter pub get
|
|
||||||
flutter build appbundle
|
|
||||||
|
|
||||||
clean:
|
|
||||||
flutter clean
|
|
||||||
|
|
||||||
launcherIcon:
|
|
||||||
flutter pub get
|
|
||||||
flutter pub run "flutter_launcher_icons:main"
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
|
|
||||||
################
|
|
||||||
## test build ##
|
|
||||||
################
|
|
||||||
|
|
||||||
make clean launcherIcon all
|
|
||||||
make clean
|
|
Loading…
Reference in New Issue
Block a user