build.gradle(:app)

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"

android {
compileSdkVersion 28

lintOptions {
disable 'InvalidPackage'
}

defaultConfig {
// TODO: Specif…

class java.lang.Class androidx.core.view.ViewCompat$2 해결법

이미지

Flutter Cloud Messaging #1. 기본 플러터 앱

import 'package:flutter/material.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Cloud Messaging',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Cloud Messaging'),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);

final String title;

@override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;

void _incrementCounter() {
setState(() {
_counter++;
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:'…

오토핫키 JSON 불러오기

#include json.ahk

FileRead titleString, title.json
titles := JSON.Load(titleString)

F2::
Random, randArea, 1, titles["areas"].MaxIndex()
Random, randPlace, 1, titles["places"].MaxIndex()
Random, randType, 1, titles["types"].MaxIndex()
Random, randCategory, 1, titles["categories"].MaxIndex()

title := Format("{1} {2} {3} {4}",  titles["areas"][randArea].area,  titles["places"][randPlace].place ,  titles["types"][randType].type,  titles["categories"][randCategory].category  )

Send, % title

return

F3::
ExitApp

return

파이어베이스 펑션스 서브도메인 설정하기

#1.
DNS 설정에서 맞춤 리소스 A 레코드에 * 를 등록한다.

#2. functions/sites.json
{
    "www":  {
        "title": "에이스에어컨 1666-8944",
        "url": "https://1666-8944.com/",
        "description": "벽걸이에어컨, 에어컨설치, 에어컨, 에어컨청소, 에어컨설치비용, 2IN1에어컨, 스탠드에어컨, 엘지에어콘, 캐리어냉난방기, 냉난방기, 에어콘"
    },
    "1666-8944.com":  {
        "title": "에이스에어컨 1666-8944",
        "url": "https://1666-8944.com/",
        "description": "벽걸이에어컨, 에어컨설치, 에어컨, 에어컨청소, 에어컨설치비용, 2IN1에어컨, 스탠드에어컨, 엘지에어콘, 캐리어냉난방기, 냉난방기, 에어콘"
    },
    "xn--oh5b1bt10b":  {
        "title": "에어컨 - 에이스에어컨 1666-8944",
        "url": "https://에어컨.1666-8944.com/",
        "description": "벽걸이에어컨, 스탠드에어컨, 투인원에어컨, 천장형에어컨, 천정형에어컨, 시스템에어컨, 삼성에어컨, 엘지에어컨, 캐리어에어컨, 위니아에어컨"
    },
...

#3. 파이어베이스 호스팅에서 커스텀 도메인을 추가한다.

#4. functions/index.js
const functions = require(&#…

파이어베이스 로그인 상태에 따라서 로그인 창이 보이거나 감추기

#1. html

        <!-- 로그인 뷰 -->   
        <div class="login-background vertical-center" v-if="!user">       


#2. script
    // 뷰 생성 //     var app = new Vue({         el: '#app',         data: {             user: null                },         methods: {             update(user) {                 this.user = user             }         }     });     // 파이어베이스 인증 리스너 //     firebase.auth().onAuthStateChanged((user) => {                 app.update(user);     });

    // 로그아웃 //     $('.logout-link').click(function(e){         e.preventDefault();         firebase.auth().signOut().then(function () {             console.log('로그아웃 상태');         }).catch(function (error) {             console.log(error.message);         });             });

* 새로고침 했을 때 깜박거림이 신경쓰이긴하다.

파이어베이스 인증에 로그인 하기

// 파이어베이스 인증 //
    $('.login-form').submit(function(e){
        e.preventDefault();

        const email = $('.login-form input[name="email"]').val();
        const password = $('.login-form input[name="password"]').val();

        firebase.auth().signInWithEmailAndPassword(email, password)
            .then((user) => {               
                console.log(user);
                this.reset();
            })
            .catch((error) => {
                console.log(error);
            });
    });