i++

プログラム系のメモ書きなど

flutter : Android で action_send (共有) intent を使う

share | Flutter Package を使います。

android_intent | Flutter Package を使って action パラメータに action_send を設定すればよいかと思ったのですが、上手くいきませんでした。詳しく調べていないので上手くやる方法はあるのかもしれません(多分ありそうです)。

Flutter : PullToRefresh の実装

flutter/overscroll_demo.dart at master · flutter/flutter · GitHub を参考にする。

要点は

  • RefreshIndicator を使う。
    • child に ListView.Builder を設定する。
    • onRefresh に、更新が終わったら complete する Future を返す関数を設定する。これが Pull したときに呼ばれる。
    • key に GlobalKey() を設定する。
      • Pull 以外の箇所(ボタン押しなど)で state の .currentState.show() を呼び出すと onRefresh に設定した関数が呼ばれる。

Flutter : MissingPluginException(No implementation found for method close on channel flutter_webview_plugin)

Flutter で webview の plugin (flutter_webview_plugin) を使用し、hot reload が反映されて WebView を表示しようとしたところタイトルのエラーが発生(Androidエミューレーター上での実行)。

以下の記事によると「リビルド(クリーン)」したら直ったとのこと。一回実行を停止してから再開したら直りました。

MissingPluginException(No implementation found for method close on channel flutter_webview_plugin) · Issue #33 · fluttercommunity/flutter_webview_plugin · GitHub

他のパッケージを入れたときも似たようなエラーが発生したので、新しいパッケージを入れたときやパッケージを更新したときは再実行が必要な模様。

golang : template で変数を利用した前後のスペース、改行をなくす

go の text/template パッケージの Text and Spaces に書かれているとおり、前のスペースをなくすには {{- を、後ろのスペースをなくすには -}} のように - をつける(アクセスする変数と - の間のスペースは必須で、括弧と - の間にスペースはいれてはいけない)。

template 中、range でスライスやマップをループするときの出力調整などに。

この方法はスペースと改行を区別せず、連続している空白を全て消すことに注意。

{{ range $ }}
    {{ . }}
{{ end }}

のような - のないテンプレートに要素が "A", "B", "C" というスライスを与えて実行すると

    A

    B

    C

という出力になり、テンプレートを

{{ range $ -}}
    {{ . }}
{{ end -}}

のように変えると

A
B
C

になる(range $ -}}- が、同じ行の後ろに続く改行だけでなく次の行の {{.}} の前のスペースも消している)。

golang : json の pretty print (タブやスペースの指定)

json.EncoderSetIndent を使用するか、json.MarshalIntent を使用する。以下は前者の例。

func writePrettyJson(filePath string, v interface{}) error {
    f, err := os.Create(filePath)
    if err != nil {
        return err
    }
    defer f.Close()
    enc := json.NewEncoder(f)
    enc.SetIndent("", "    ")
    return enc.Encode(v)
}

json.MarshalIntent を使用した例は以下リンク先参照。