フラッター処理ダイアログクリックイベントコールバック
インポート 'パッケージ:フラッター/ material.dart' ; インポート 'パッケージ:scoped_model / scoped_model.dart' ; ボイドメイン(){ runApp(新しいRootLayout())。 } クラス RootLayoutは延びStatefulWidget { @Override 状態 <StatefulWidget> createState(){ 戻り 新しいRootLayoutMは(); } } クラス RootLayoutMが延びている状態が<RootLayout> 実装OnDialogClickListener { 文字列str = "ショー単純なダイアログを" 。 文字列showMsg=「簡単なダイアログを表示します」。 @Override ボイドOnOK呼び出し(){ プリント( 'OnOK呼び出し' )。 SETSTATE((){ showMsg = STR + "をクリックOnOK呼び出し" ; }); } @Override ボイドonCancel(){ プリント( 'onCancelは' )。 SETSTATE((){ showMsg = STR + "をクリックonCancel" ; }); } @Overrideの ウィジェットのビルド(BuildContextコンテキスト){ 返す 新しいMaterialApp( :ホーム新しい足場( 本体:新しいですセンター( 子: 新しいテキスト(showMsg、スタイル:新 TEXTSTYLE(色:カラー(0xFF00FF00 )))、 )、 floatingActionButton:新しい MyFloat(本)、 )); } } // 定义一个抽象类 抽象 クラスOnDialogClickListener { ボイドOnOK呼び出し(); 無効onCancelを(); } クラス MyFloatは延びStatelessWidget { 最終OnDialogClickListenerコールバックを。 MyFloat(この.callback)。 _showMyMaterialDialog(BuildContextコンテキスト){ 印刷( "_showMyMaterialDialog"); にShowDialog( コンテキスト:コンテキスト、 ビルダー:(コンテキスト){ 返す 新しい新AlertDialog( :タイトル新しい新しいテキスト(「タイトル」)、 :コンテンツ新しい新しいテキスト(「コンテンツの内容内容内容内容内容を」、) アクション: <ウィジェット> [ 新しい新しいFlatButton( onPressed:(){ callback.onOk(); Navigator.of(コンテキスト).pop(); }、 子供:新規新しいテキスト( "確認" )、 )、 新しい新FlatButtonは( onPressed:(){ callback.onCancel()。 Navigator.of(コンテキスト).pop(); }、 子供: }新しいテキスト( "取消" )、 )、 ]、 ); }); } @Overrideの ウィジェットのビルド(BuildContextコンテキスト){ // TODO:ビルドが実装 返す 新しいFloatingActionButton( 子:新しいテキスト( "ShowDialogをする" )、 onPressed:(){ _showMyMaterialDialog(コンテキスト); }); }