snackBarをどこからでも使えるように部品かしたいのですが、違うファイルにした途端にエラーが出てしまいます。
スナックバーを形成する部分のみをCustomSnackBarというクラスにした時
import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: '', theme: ThemeData( primarySwatch: Colors.blue, ), home: Homepage(), ); } } class Homepage extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('テスト'), ), body: Center( child: Column( children: [ RaisedButton( child: Text('スナックバー表示'), color: Colors.blue, textColor: Colors.white, onPressed: () { final snackbar = CustomSnackBar(); Scaffold.of(context).showSnackBar(snackbar); }, ), ], ), ), ); } } class CustomSnackBar extends SnackBar { @override Widget build(BuildContext context) { return SnackBar( content: Text('10秒後に消えます'), action: SnackBarAction( label: '閉じる', onPressed: () { Scaffold.of(context).removeCurrentSnackBar(); }, ), duration: Duration(seconds: 10), ); } }
ビルドは通るのですが、いざレイズドボタンを押下するとエラーが出ます
'package:flutter/src/material/snack_bar.dart': Failed assertion: line 189 pos 15: 'content != null': is not true.
SnackBarクラスの中のcontenという部分がfalseを返してしまっているという内容のようです。
スナックバーを他のクラスに移すことは不可能なのでしょうか?
レイズドボタンごと移動させるとエラーは出ません。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/12 02:52