![見出し画像](https://assets.st-note.com/production/uploads/images/91228107/rectangle_large_type_2_c0d36421a052fb7e248e028206246766.png?width=1200)
【Flutter】学んだこと(22/11/7〜15)
firebaseを使うときの初期化処理
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
キーキー?
const MyApp({Key? key}) : super(key: key);
なぜ必要か、今はさっぱり。
Statefulwidgetをうまく扱うには後々わかってたほうがいいみたい?とりあえず今回はその辺でスルーします。
TextFieldで入力した値を取得するにはとりあえずこれ
//変数名は好きに決める
Stirng 変数名 = '';
TextField(
onChanged: (String value) {
setState(() {
変数名 = value;
});
},
),
メールアドレスとパスワードでログイン
onPressed: () async {
try {
final FirebaseAuth auth = FirebaseAuth.instance;
final result = await auth.signInWithEmailAndPassword(
email: loginUserEmail,
password: loginUserPassword,
);
await Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) =>
ChatMain()
),
);
} catch (e) {
setState(() {
infoText = 'ログイン失敗${e.toString()}';
});
}
メニューバーの表示(ツイッターみたいな)
drawer: Drawer(
width: 350,
backgroundColor: Colors.white,
elevation: 0,
child: ListView(
children[
ListTile(),
ListTile(),
ListTile(),
ListTile(),
],
),
),
appBar: AppBar(),の後に置くことで、自動的にappBar内にメニューアイコンが表示される。
リアルタイム更新
//リロードや再ログイン等で状況が反映される
FutureBuilder<QuerySnapshot>(
future: Firestore.instance.collection('posts').get(),
builder: (context, snapshot)
)
//テキスト入力後などすぐに結果が反映される
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('posts').snapshots(),
builder: (context, snapshot)
)
FutureBuilderをStreamBuilderに変換すると、リアルタイム更新できる。get()をsnapshot()に変更など、それに伴い変化するものあり。
その他、いろいろ学びましたが、割とできるようになってきました!
【忘備録】
Flutterの学習を始めてちょうど1ヶ月半が経ちました。
今朝、簡易的なチャットアプリが完成し、独学ではかなり頑張ったほうなのかと自分を褒めています!自己肯定大事!
ただ、今回のアプリ制作では、まだ削除機能がなかったり、ログイン情報を別ページに反映させることは、エラーが続き省いたりしてます。パスワード変更やプロフィール登録など、もっとつけたい機能がたくさんあるのに、現状スキルが追いついてません。
「毎日1分でもコードに触れる」を目標に進んできましたが、まぁまぁ継続できてます。今からflutterを始める人は目安にして下さい。
そしてそして、ぼちぼち自分の思う少し難しめのアプリ作成に取り掛かろうかと思います。これがうまくいけば転職活動を始める予定です。このnote始めた理由の一つ、エンジニアにまるまでの記録が早く達成できることを目標に、日々精進します〜!
ちなみに、朝活最高ですw
仕事は後回しで、脳が最強に働く間はプログラミングの勉強に充ててますw
この記事が気に入ったらサポートをしてみませんか?