Posts

Showing posts from 2020

Flutter - admob_flutter 1.0.0 #Error: No such module 'AppTrackingTransparency'

20201011   https://pub.dev/packages/admob_flutter   Firebase build.gradle classpath 'com.google.gms:google-services:4.3.4' app>src>build.gradle apply plugin : 'com.google.gms.google-services' implementation platform( 'com.google.firebase:firebase-bom:25.12.0' ) implementation  'com.google.firebase:firebase-analytics'                                                                                                                                                         Admob-Android app>src>main>AndroidManifest.xml <application android :name ="io.flutter.app.FlutterApplication" android :label ="keys" android :icon ="@mipmap/ic_launcher" > <meta-data android :name ="com.google.android.gms.ads.APPLICATION_ID" android :value ="ca-app-pub-6080925650058329~5412407969" /> ☝<meta-data android:name..../> must under the <application> and out of &l

Flutter - Text multiline

20201011   Flexible( child: Text()),

Flutter - Firebase Admob

  Firebase build.gradle classpath 'com.google.gms:google-services:4.3.4' app>src>build.gradle apply plugin : 'com.google.gms.google-services' implementation platform( 'com.google.firebase:firebase-bom:25.12.0' ) implementation  'com.google.firebase:firebase-analytics'                                                                                                                                                         Admob-Android app>src>main>AndroidManifest.xml <application android :name ="io.flutter.app.FlutterApplication" android :label ="keys" android :icon ="@mipmap/ic_launcher" > <meta-data android :name ="com.google.android.gms.ads.APPLICATION_ID" android :value ="ca-app-pub-6080925650058329~5412407969" /> ☝<meta-data android:name..../> must under the <application> and out of </activity> Admob-iOS <key>GADApplicatio

Flutter -Biological Recognition authentication setup 2020

Image
   20201011   iOS < key > NSFaceIDUsageDescription </ key > < string > Why is my app authenticating using face id? </ string >                                                                                                                                                                       Android Android -Trouble Error: PlatformException(no_fragment_activity, local_auth plugin requires activity to be a FragmentActivity., null) Trouble shotting: app>src>main>kotlin>[bundle id]> MainActivity.kt   package co.et.keys import androidx.annotation.NonNull ; import io.flutter.embedding.android.FlutterFragmentActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugins.GeneratedPluginRegistrant class MainActivity: FlutterFragmentActivity() { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine) ; } } app>src>res> AndroidMaifest.xm

Flutter - "PlatformException(no_fragment_activity, local_auth plugin requires activity to be a FragmentActivity., null)"

Image
package co.et.keys import androidx.annotation.NonNull ; import io.flutter.embedding.android.FlutterFragmentActivity import io.flutter.embedding.engine.FlutterEngine import io.flutter.plugins.GeneratedPluginRegistrant class MainActivity: FlutterFragmentActivity() { override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { GeneratedPluginRegistrant.registerWith(flutterEngine) ; } } <uses-permission android :name ="android.permission.USE_BIOMETRIC" /> refer 1 refer2  

Dart - Compress -GZIP vs ZLIB

20201004 import 'dart:convert' ; import 'dart:io' ; void main () { String data = '' ; for (int i = 0 ; i < 100 ; i++) { data = data + 'i love flutter \r\n ' ; } List origin = utf8.encode(data) ; List compress = GZIP.encode(origin) ; List decompress = GZIP.decode(compress) ; String decode = utf8.decode(decompress) ; assert (data == decode) ; print( 'origin size : ${origin. length } bytes' ) ; print( 'GZIP size: ${compress. length } bytes' ) ; print( 'decompress size: ${decompress. length } bytes' ) ; int encodeCompress(zipType) { List compress = zipType.encode(origin) ; int size = compress. length ; return size ; } print( '---- GZIP vs ZLIB -----' ) ; print( 'GZIP size : ${encodeCompress(GZIP)} ' ) ; print( 'ZLIB size : ${encodeCompress(ZLIB)} ' ) ; } Performing hot restart... Syncing files to device iPhone 11 Pro... Restarted application in 87ms. flutter

Dart - CRUD file in path

20201004 import 'dart:io' ; import 'package:flutter/material.dart' ; import 'package:path_provider/path_provider.dart' ; void main () async { WidgetsFlutterBinding. ensureInitialized () ; await getApplicationDocumentsDirectory().then((Directory dir) { File file = File ( ' ${dir. path } /text.txt' ) ; file.writeAsString( '123' ) ; void read() async { String contents = await file.readAsString() ; print(contents) ; } read() ; }) ; }   [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FileSystemException: Cannot open file, path = '//test.txt' (OS Error: Read-only file system, errno = 30) FileSystemException: Cannot open file OS Error: Is a directory reading-writing-files

Flutter - App Orientation

void main () => runApp( MyApp ()) ; class MyApp extends StatelessWidget { @override Widget build (BuildContext context) { SystemChrome. setPreferredOrientations ( [DeviceOrientation. landscapeLeft , DeviceOrientation. landscapeRight ]) ;

Flutter - Cocoapod update

Image
 20200921 pod repo update sudo gem install cocoapods pod setup

Flutter - change PRODUCT_BUNDLE_IDENTIFIER in 2020

20200920   1.app /  build.gradle defaultConfig  defaultConfig { applicationId "co.yourName.appName" 2.app/src/main/ AndroidManifest.xml  3.app/src/debug/ AndroidManifest.xml   4.app/src/profile/ AndroidManifest.xml   <manifest xmlns: android ="http://schemas.android.com/apk/res/android" package ="co.yourName.appName" > 5. app/main/kotlin/ co/yourName/ newName  6.app/main/kotlin/ co/ yourName / newName/  MainActivity.java   package co.yourName.appName ; 7.pubspec.yaml name : appName 8. lib all dart file  change appName 9.Runner.xcodeproj  /  project.pbxproj    (there are 3  PRODUCT_BUNDLE_IDENTIFIER ) must be changed.) PRODUCT_BUNDLE_IDENTIFIER = co.yourName.appName; 10. terminal  flutter clean 11. File >Invalidate Caches/Restart... 👍done

Flutter - AnimationController

class _WelcomeScreenState extends State<WelcomeScreen> with SingleTickerProviderStateMixin { AnimationController controller ; Animation animation ; @override void initState () { super .initState() ; controller = AnimationController ( duration: Duration (seconds: 1 ) , //0 to 1 in 60 steps tickers. vsync: this, //SingleTickerProviderStateMixin class is going to provide animation Ticker // upperBound: 100.0,有curve class必須小於1,以避免衝突 ) ; animation = CurvedAnimation ( parent: controller , curve: Curves. easeIn ) ; //upperBound 需小於1 controller .forward() ; //Get the animation to start. proceed the animation forward(small to big) controller .addStatusListener((status) { if (status == AnimationStatus. completed ) { controller .reverse(from: 1.0 ) ;//值由小到大 } else if (status == AnimationStatus. dismissed ) { controller .forward() ; } print( animation . status ) ; }) ; //Ca

Flutter - " control-flow-collections' experiment to be enabled "

environment sdk 改成2.6.0 後,重啟就不會出現錯誤了。 environment : sdk : ">=2.8.0 <3.0.0" items: [ for ( var i in currenciesList) DropdownMenuItem ( child: Text ( ' $i ' ) , value: ' $i ' , )], 

Dart syntax- Future,asyc,await

Image
import 'dart:io' ; void main () { performTasks() ; } void performTasks () async { //i have someone need a wait team1() ; String task2result = await team2() ; //my team there is someone need to wait. team3(task2result) ; } void team1 () { print( 'task 1 complete' ) ; } Future team2 () async { //in the future team2, there is someone who is call "await" need to wait. String result ; print( 'there is team2. Someone who is call "await" need a wait.' ) ; await Future . delayed ( //pls wait for me. Duration (seconds: 3 , ) , () { result = 'task 2 await \' s Data.' ; print( 'task 2 complete. \' await \' is giving his data to team3.' ) ; } , ) ; return result ; } void team3 (String task2Data) { print( 'task 3 complete, i got $task2Data ' ) ; } ☝ asychrony   等可能很耗時的程式設置好後再返回future/steam物件。從出發到結果中間無await標示的可以先執行。 ☝Future async + await 2.使用Futurn type 必須先聲明async ☝Steam 有兩個方法

Flutter - xylophone project

Image
import 'package:flutter/material.dart' ; import 'package:audioplayers/audio_cache.dart' ; void main () => runApp( XylophoneApp ()) ; class XylophoneApp extends StatelessWidget { void audioPlayer (int musicNum) { final player = AudioCache () ; player.play( 'note $musicNum .wav' ) ; } Expanded keyboard ({Color color , int musicNum}) { return Expanded ( child: FlatButton ( color: color , onPressed: () { audioPlayer(musicNum) ; } , ) , ) ; } @override Widget build (BuildContext context) { return MaterialApp ( debugShowCheckedModeBanner: false, home: Scaffold ( body: SafeArea ( child: Center ( child: Column ( crossAxisAlignment: CrossAxisAlignment. stretch , children: [ keyboard(color: Colors. red , musicNum: 1 ) , keyboard(color: Colors. orange , musicNum: 2 ) , keyboard

Flutter- Dicee project

Image
  import 'package:flutter/material.dart' ; import 'dart:math' ; void main () => runApp( MaterialApp ( debugShowCheckedModeBanner: false, home: Scaffold ( backgroundColor: Colors. red , appBar: AppBar ( backgroundColor: Colors. red , title: Text ( 'Dice' , style: TextStyle ( color: Colors. white , ) , ) , centerTitle: true, ) , body: DicePage ())) , ) ; class DicePage extends StatefulWidget { @override _DicePageState createState () => _DicePageState () ; } class _DicePageState extends State<DicePage> { int leftDiceNum = 1 ; int RightDiceNum = 1 ; void change () { setState(() { leftDiceNum = Random ().nextInt( 6 ) + 1 ; RightDiceNum = Random ().nextInt( 6 ) + 1 ; }) ; } @override Widget build (Bui

Python - with BIAS & RSI

from pandas_datareader import data as web from mpl_finance import candlestick_ohlc from matplotlib import pyplot as plt from matplotlib import style import matplotlib.dates as mdates import yfinance as yf import datetime as dt import pandas as pd import numpy as np import time style.use('dark_background') yf.pdr_override() ma1 = 5 ma2 = 20 print('Stock Number:') stock_no = input() csv_file = '/users/jht/Desktop/python/stockData/'+stock_no+'.csv' start = dt.datetime(2020, 1, 1) end = dt.datetime.now() df = web.get_data_yahoo(stock_no + '.TW', start, end) df.to_csv(csv_file) time.sleep(2) data = pd.read_csv(csv_file, parse_dates=True, index_col='Date') data.head() close = data["Close"] avg = sum(close)/len(close) top = plt.subplot2grid((21, 9), (0, 0), rowspan=9, colspan=9)#整個畫面共有(21row,9col),其位於(0row,0col),此占各9row&col bottom = plt.subplot2grid((21, 9), (12, 0), rowspan=3, colspan=9, sharex=top) bottom1 = plt.subplot2gr