序文:
みなさん、こんにちは。しばらく記事を更新していません。AndroidとIOSでは、インターフェイスとメソッドの呼び出しが行われたときに通信するためにインターフェイスコールバックを使用することがよくあります。記述はより簡単で、今日はフラッターの使用方法を共有します。
準備オーケー:
フラッター開発環境をインストールする必要があります:誰でも前のチュートリアルを見ることができます:
1 Winシステムフラッター開発環境インストールチュートリアル:https://www.jianshu.com/p/152447bc8718
2 Macシステムフラッター開発環境インストールチュートリアル:https:/ /www.jianshu.com/p/bad2c35b41e3
効果画像:
実装:
ログから、リストビューのアイテムをクリックして、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