Flutterの準備として、環境構築とDartを少々
 
									Webアプリを作る時は、この辺の技術を使って作ることが多いのですが、
- Python(機械学習や、データの加工など)
- データベース
- Golang(gin)
- HTML,CSS
- Docker, Ubuntu
スマホ用のアプリは勉強程度でSwiftを少々かじっている程度なので、
スマホ関係の技術を何かしら習得しておきたいなっていう思いもあり、
そろそろFlutterを勉強してみるのも良いかなって思い、早速ハンズオンしてみました。
来たるべきスマホ用App開発のために。いつの事か分かりませんが・・・
インストールはVirtualBoxのMintLinuxへ
初めはDockerコンテナを使わせてもらおうかなって思ってたんですが、簡単にできそうな感じがしなかったので一旦コンテナは諦めて、仮想環境のMintLinuxへインストールしてみることにしました。まずは触ってみることを優先です。
参考にさせていただいたサイト
VirtualBoxへのリソース割り当て
一応、コア数2, メモリ6GBで始めました。
- コア数 2個
- メモリ 6GB -> 10GBへ増設(Android Emulatorを動かす時)
インストール、設定などは少ないリソースの割り当てで実行してたので時間が掛かりましたが、上記リンクなどを参考にしていけば大丈夫で、
色などをちょこっと変更したサンプルのプレビュー画面を見ることが出来ました。

Android の Emulator でテストする場合ですが、メモリ6GBの割り当てではどうやら足らなかったようで、一応10GBを割り当ててみました。
Emulatorは Pixel5を新たに追加しました。

Dart言語も少々
いきなりFlutterを始めても戸惑いが大きいので、まずはDartから学んで行こうと思います。
C言語にも似てるし、JavaScriptには余り馴染みがないですが、何とかなりそうな雰囲気を持ちました。
必須
命令の終わりにセミコロン(;)を付けなきゃいけない。
型
- var 型推論のための宣言
- dynamic Golangでいうinterface型のようなもの?
こんな感じで宣言する。
- 型 変数名
- 型 変数名 = 初期値
null
Swiftにあるような決まりごと。  
基本的な変数宣言はnullを許さない。
int?  // null OK
int   // null ダメ定数
2種類。どちらも1回だけ書き換えを許すが、書換のタイミングが違う感じ。  
まだイマイチイメージが湧いていないので使いながら覚えることとする。
- const 多分だが最初に値を決める?
- final 同じくだが、こちらはコード実行前に値を決める?
const は普段使っているconstと思えば良いと思う。finalに気をつける。
const int myConst = 10;         // コンパイル時に値が代入される
final myFinal = DateTime.now(); // ビルド時に値が代入される基本型
- String
- int
- double 整数も可
リスト
myListが型名
List<int> myList = [0, 1, 2, 3, 4, 5];辞書
Map<int, String> mapVenue = {
    0: '中山',
    1: '府中',
    2: '京都',
    3: '阪神',
};enum
enum MyNum {
    one,
    two,
    three,
}文字列の作り方
'何かしらの文字列'
@'何かしらの文字列'
''' 何かしらの文字列 '''- 文字列は + で結合する。
関数
呼び出しは他言語と同じ様な感じ。
定義方法はC言語っぽい。
String myFunction(String full_name) {
    String _return_name = '関数内: ' + full_name;
    return _return_name;
}if
if (条件) {
    ;
} else if (条件) {
    ;
} else {
    ;
}switch
switch文もある。C言語に似てる。
switch (変数) {
case 条件:
    break;
case 条件:
    break;
case 条件:
    break;
}くり返し
for
for(int i=0; i<10; i++) 
    ;
}リストをループ、これはPythonっぽく書ける。
for(int num in numList) {
    print(num);
}forEach
閉じのセミコロンを忘れずに。カッコが多すぎて、ちょっと面倒な書き方・・・。
numList.forEach( (num){
    print(num);
});Pythonよりちょっと書くカッコが多いな。
例外処理
try {
    ;
} catch(e) {
    print(e);
}クラス
class MyClass {
  // コンストラクタ化 - 再利用したいプロパティやメソッドを指定
  // MyClass() はコンストラクタ、Dartにオーバーライド機能は無い(代替機能がある)
  MyClass({required this.color, required this.material});
  
  // プロパティ - 変数や定数の指定
  // _変数名 privateと同等? アンダースコアで始まるプロパティ名は外部からアクセスできない
  String color;
  String material;
  // メソッド - 関数の指定
  void myMethod(String features) {
    print(features);
  }
}とりあえず、基本となりそうな所を勉強してみました。
後は作りつつ、必要な所を調べながら学んでいこうかなって思います。
以上になります



