したいこと
今回は、Flutterですごい基礎的なことですが、頻繁にコードの書き方を忘れるのでメモします。
方法
引数(parametor)を引き継ぐ方法は以下です。
class A extend StatelessWidget {
// Named Constructor(参考サイトの2を参考ください)
final dynamic(type) parametor_a
final dynamic(type) parametor_b
A({Key? key, required this.parametor_a, required this.parametor_b}) : super(key: key)
}
Step1. parametorを宣言する。
final dynamic(type) parametor_a
final dynamic(type) parametor_b
Step2. parametorをrequiredで、引き継ぐようにする。
A({Key? key, required this.parametor_a, required this.parametor_b}) : super(key: key)
実装したかったこと
FirebaseのCloud Databaseにデータを追加するためのボタンを作ることが、実装したいことでした。 データを追加するボタンだけ別のクラスにした時に、値の引き継き方がわからなくなったので、メモようにこの記事を作成しました。add_data.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyFirestorePage(),
);
}
}
class MyFirestorePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: MediaQuery.of(context).size.height*0.5),
child: AddData(collection_name: 'test_collection', doc_name: 'test_doc', field_name: 'test_field', field_value: "test_value",)
),
],
),
),
);
}
}
class AddData extends StatelessWidget {
final String collection_name;
final String doc_name;
final String field_name;
final dynamic field_value;
AddData({Key? key, required this.collection_name, required this.doc_name, required this.field_name, required this.field_value }) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: ElevatedButton(
child: Text("Create collection and Document"),
onPressed: () async {
await FirebaseFirestore.instance
.collection(collection_name)
.doc(doc_name)
.set({field_name: field_value});
},
),
);
}
}
参考サイト
1. 引数(parametor)の引継ぎ方について
2. DartのNamed Constructorについて
その他
3.StatefulWidgetでの、引数の引継ぎ方