Flutter

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);
  }
}

とりあえず、基本となりそうな所を勉強してみました。

後は作りつつ、必要な所を調べながら学んでいこうかなって思います。

以上になります


こういうブログもありました。

CyberMameCAN
  • 鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。
    Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。
    今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

LinuxWebサイト作成

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください