フラッターインターフェイスコールバックコールバック固有の実装ケース

序文:

みなさん、こんにちは。しばらく記事を更新していません。AndroidとIOSでは、インターフェイスとメソッドの呼び出しが行われたときに通信するためにインターフェイスコールバックを使用することがよくあります。記述はより簡単で、今日はフラッターの使用方法を共有します。

準備オーケー:

フラッター開発環境をインストールする必要があります:誰でも前のチュートリアルを見ることができます:
1 Winシステムフラッター開発環境インストールチュートリアル:https//www.jianshu.com/p/152447bc8718
2 Macシステムフラッター開発環境インストールチュートリアル:https:/ /www.jianshu.com/p/bad2c35b41e3

効果画像:

QQスクリーンショット20201207114550.png
QQスクリーンショット20201207114531.png

実装:

ログから、リストビューのアイテムをクリックして、callbackメソッドのアイテムに表示されている添え字とテキストを印刷したことがわかります。

import 'package:flutter/material.dart';
typedef _CallBack = void Function(int selectIndex, String selectStr);
class TextList extends StatefulWidget {
  final List dataArr;
  final _CallBack  callback;
  TextList({Key key, this.dataArr,this.callback }) : super(key: key);
  @override
  _TextListState createState() {
    return _TextListState();
  }
}

class _TextListState extends State<TextList> {
  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar:  AppBar(
       title: Text("接口回调列表 "),
      ),
      body: ListView.builder(
        itemCount: widget.dataArr.length,
        itemBuilder: (BuildContext context, int position){
          return   _itemWidget(context, position);
        },
      ),
    );
  }
  Widget _itemWidget(BuildContext  context, int index){
    return GestureDetector(
      child: Center(
        child:Padding(
        padding: EdgeInsets.fromLTRB(0, 10, 0, 10),
          child: Text(widget.dataArr[index]),
        )
      ),
      onTap: (){
        if(widget.callback!=null){
          widget.callback(index,widget.dataArr[index]);
        }
      },
    );
  }
}

TextListクラスでdataArr配列とコールバックメソッドを定義して、TextListでインスタンス化し、コンストラクターから渡します。

  final List dataArr;
  final _CallBack  callback;

次に、グローバルCallBackインターフェイス属性を定義します。

typedef _CallBack = void Function(int selectIndex, String selectStr);

リストビューアイテムクリックイベントのontapメソッドで呼び出されます。

   onTap: (){
        if(widget.callback!=null){
          widget.callback(index,widget.dataArr[index]);
        }
      },

TextListの具体的なインスタンス化の呼び出し:

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return  TextList(
      dataArr: datalist,
      callback: (index, str){
      print("indexe   -----  >   "+index.toString());
      print("str----  >   "+str);
      },
    );
  }

偽のデータ:

   List  datalist= new List();
  @override
  void initState() {
    super.initState();
    for(var i=0 ; i<20 ;i++){
      datalist.add("第几$i条数据");
    }
  }

完全なホームページコード:

import 'package:flutter/material.dart';
import 'text_list.dart';
/**
 *  创建人:xuqing
 *  创建时间:2020年12月7日10:03:31
 *  类是说明:data 接口回调测试类
 *
 */
class HomePage extends StatefulWidget {
  HomePage({Key key}) : super(key: key);
  @override
  _HomePageState createState() {
    return _HomePageState();
  }
}
class _HomePageState extends State<HomePage> {
  List  datalist= new List();
  @override
  void initState() {
    super.initState();
    for(var i=0 ; i<20 ;i++){
      datalist.add("第几$i条数据");
    }
  }
  @override
  void dispose() {
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return  TextList(
      dataArr: datalist,
      callback: (index, str){
      print("indexe   -----  >   "+index.toString());
      print("str----  >   "+str);
      },
    );
  }
}

これまでのところ、フラッターのインターフェイスコールバックは終了しています。

最終要約:

flutterのインターフェイスコールバックはまだjavaに非常に似ています。flutterだけがキーワードインターフェイスを使用せず、typedef属性を使用して処理します。これに注意する必要があります。この記事は簡単な説明であり、他にも多くの柔軟なユーザーがいます。私はそれについて話し始めません。興味があれば、個人的に勉強することができます。最後に、私の記事があなたの問題を解決するのに役立つことを願っています。将来、あなたと共有するためのより有用なコードを提供します。記事がかなり良いと思う場合は、注意とスターを付けてください。ここに感謝します。個人的なQQ / WeChat(1693891473)を追加することもできます。

プロジェクトアドレス:

コードクラウド:https://gitee.com/qiuyu123/flutter_callback

QQ交換グループ:

92437359.png

おすすめ

転載: blog.csdn.net/xq610928/article/details/110818233