💬

no implementation found for method showtoast on channel ponnamkarthik/

2023/02/26に公開

fluttertoastを使おうとしたらエラーが出た?

https://pub.dev/packages/fluttertoast

no implementation found for method showtoast on channel ponnamkarthik/

解決方法

こちらのブログを参考にしました。対象方法は一度アプリをシュミレーターから削除して、ビルドし直すと解消できました。
https://kehalife.com/flutter-toast1/

問題のエラーが発生する原因になったコード

コード自体にエラーの原因はなく、パッケージの問題だったようです。
このソースコードはボタンを押すと、ref.listenの機能でトーストを出して、メッセージを表示します。
ref.listenというのは、ただのコールバック関数です。今回だと、カウンターのプロバイダーを引数として受け取って、ボタンを押すと、小さいポップアップが出てくるロジックになっております。

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fluttertoast/fluttertoast.dart';

final countStateProvider = StateProvider<int>((ref) => 0);

class ListenPage extends ConsumerWidget {
  const ListenPage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context, WidgetRef ref) {
    final count = ref.watch(countStateProvider);
    // Providerを購読する
    ref.listen<int>(
      countStateProvider, // 購読対象のProviderを指定
      (previous, next) {
        // 行いたい処理を書きましょう
        print('call back');
        Fluttertoast.showToast(
          msg: 'ボタンを押したよ!',
          toastLength: Toast.LENGTH_LONG,
        );
      },
      // `onError` で何らかのエラーハンドリングが可能(任意)
      onError: (error, stackTrace) => debugPrint('$error'),
    );

    return Scaffold(
      appBar: AppBar(
        title: Text('ref.listen ${count.toString()}'),
      ),
      // 数値をSharedPreferencesに保存するロジック
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          ref.read(countStateProvider.notifier).state++;
        },
        child: const Icon(Icons.add),
      ),
    );
  }
}
Flutter大学

Discussion