0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Flutter] 異なるWidget同士で引数を引き継いで使う方法

Last updated at Posted at 2021-12-31

したいこと

今回は、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での、引数の引継ぎ方

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?