フラッシュ学習ノート

4058 ワード

初学Flutter、簡単にメモを取って、リアルタイムで更新します
1.Flutterでのページジャンプ:
 onPressed: () {
    Navigator.push(context, new MaterialPageRoute(builder: (context)=> new MyScaffold(),)
       );
   }

あるいはmain.dartでの統合管理
 home: MyHomePage(),
 // 
 routes:  {
    '/LayoutPage':(BuildContext context) =>new LayoutPage(),
   },

ジャンプが必要な場所で
 Navigator.of(context).pushNamed('/LayoutPage');

2.クラス間転送
new MyFadeTest(title: 'Fade Demo')

受信クラス
   final String title;
      // 
      MyFadeTest({Key key, this.title}) : super(key: key);

この値を使用
new Text(widget.title)

または、
final String lable;
 CustomButton(this.lable);
 @override
  Widget build(BuildContext context) {
    return new RaisedButton(onPressed: (){},child: new Text(lable));
  }

CustomButtonクラスを使用する場合
new CustomButton('Hello')

3.ブレークポイントデバッグVscodeエディタで、ASと同じ方法でブレークポイントを打った後、F 5を押すと、コードがブレークポイントに実行されると、参考資料が停止します.http://www.jintiankansha.me/t/uCAhjuWVDQ
印刷ログ:print()結果はコンソールDEBUG CONSOLEに印刷されます.
4.非同期操作
@override
  Widget build(BuildContext context) {
    //  setState() , 
  }
  //async    await 
  void loadData() async {
   String dataURL = "https://jsonplaceholder.typicode.com/posts";
    http.Response response = await http.get(dataURL);
    // setState  build 
    setState(() {
     List widgets = json.decode(response.body);
    });
  }

説明:Dartは単一スレッド言語であるため、UIスレッドでネットワーク要求を実行してもプログラムがブロックされることはありません.しかし、データが大きすぎる場合は、Isolatesを使用する必要があります.
5.動的表示非表示ビュー
new Offstage(
  // true:   false: 
  offstage: false,
  child: new RaisedButton(
    child: new Text('fff'),
    onPressed: _layout,
  ),

)6.オペレータ
var i;
  init() {
    i ?? 999; // i , 999
    i ??= 999; //  i , i 999
    var result = i ~/ 99; // 
    // result =10
  }

7.ショートカット操作-.エディタにstlを入力すると、自動的にステータスコントロールモジュールが生成され、stfを入力するとステータスコントロールモジュールが正常に生成されます.
8.レイアウト関連1.WidgetとWidgetの間はchildによってネストされている.2.widgetには1つのchildしかないものもあります.複数のchildを使用するには、1つのchildrenを外層に包む必要があります:[]
9.ListTitleレイアウトは使いやすい.https://juejin.im/post/5c88d6c4f265da2de970bc24
10.Android原生受信Flutter伝値中国語文字化けし問題
String decodeValue = URLDecoder.decode(value, "UTF-8");

11.生アクセスFlutterホットリロードTerminalでコマンドラインがflutter_に入るmoduleディレクトリの下に、コマンドflutter attachを入力し、Runに一度アイテムを入力すると、Terminalにr(ホットロード)、R(ホット再起動)を入力できます.
12.Flutterでローカルリソース(ファイル、ピクチャ)を使用するには、まずpubspec.yamlファイルでassetsが必要だと宣言しました.例えば、私のピクチャパスはassets/imagesです.
flutter:
  uses-material-design: true
  assets:
    - assets/images/class_default.png

13.非同期要求と待機、onActivity Result機能の実現
新しいページを開き、新しいページの戻り値を待つ
void getResult() async {
    var result = await Navigator.push(
        context, MaterialPageRoute(builder: (context) => ResultTest()));
    print(" ===$result");
  }

ページを閉じてResultに戻る
 Navigator.pop(context, " ");

14.右スライドしてページを閉じる
CupertinoPageRouteで開いているサブページを使用すれば、右スライドを1つ上に戻すことができます.
   Navigator.of(context)
            .push(CupertinoPageRoute(builder: (BuildContext context) {
          return BottomAppBarDemo();
        }));
   

15.ScrollView(ListVIdw)ネストListView問題1).Listview表示不全解決:内部ListViewにshrinkWrapを追加する:true
2).外層スクロールコントロールのスライドリスニングは内部ListViewによって盗まれて解決される:
 Widget getListView(List data) {
    //sizeBox 
    return SizedBox(
      child: ListView.builder(
        //  ScrollView ListView ,ListView 
        shrinkWrap: true,
        //  
        physics: NeverScrollableScrollPhysics(),
        itemCount: data.length,
        itemBuilder: (BuildContext context, int position) {
          ...
        },
      ),
    );
  }