본문 바로가기

: IT/Flutter

Collection and Generic

반응형

String Interpolation

String name = "jisu";
print("Hi, $name!");


Collection : 데이터들을 모아서 가지고 있는 자료 구조
Generic : Collection이 가지고 있는 데이터들의 데이터 타입을 지정. 코드의 재사용성을 높임

List는 2가지 종류
fixed-length list : 길이가 고정인 리스트 ex) var number = new List(5);
growable list : 가변 길이 리스트 ex) var number = new List(5);

 

1. 스낵바와 ScaffoldMessenger

import 'package:flutter/material.dart';

void main() {
  runApp(App());
}

class App extends StatelessWidget {
  const App({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        theme: ThemeData(primarySwatch: Colors.blue), home: Page());
  }
}

class Page extends StatelessWidget {
  const Page({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Scaffold messenger')),
      body: Body(),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.thumb_up),
        onPressed: () {
          ScaffoldMessenger.of(context).showSnackBar(SnackBar(
              content: Text('Like a new Snack bar'),
              duration: Duration(seconds: 5),
              action: SnackBarAction(
                label: 'Undo',
                onPressed: () {
                  Navigator.push(context,
                      MaterialPageRoute(builder: (context) => ThirdPage()));
                },
              )));
        },
      ),
    );
  }
}

class Body extends StatelessWidget {
  const Body({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Center(
        child: ElevatedButton(
      child: Text('Go to the second page'),
      onPressed: () {
        Navigator.push(
            context, MaterialPageRoute(builder: (context) => SecondPage()));
      },
    ));
  }
}

class SecondPage extends StatelessWidget {
  const SecondPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text('Second Page')),
        body: const Center(
            child: Text('좋아요가 추가되었습니다',
                style: TextStyle(color: Colors.redAccent, fontSize: 20.0))));
  }
}

class ThirdPage extends StatelessWidget {
  const ThirdPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ScaffoldMessenger(
      child: Scaffold(
          appBar: AppBar(title: Text('Third Page')),
          body: Builder(builder: (context) {
            return Center(
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                  Text('좋아요를 취소 하시겠습니까?',
                      style:
                          TextStyle(color: Colors.redAccent, fontSize: 20.0)),
                  ElevatedButton(
                      onPressed: () {
                        ScaffoldMessenger.of(context).showSnackBar(SnackBar(
                            content: Text('좋아요가 취소되었습니다'),
                            duration: Duration(seconds: 3)));
                      },
                      child: Text('취소하기'))
                ]));
          })),
    );
  }
}
반응형

': IT > Flutter' 카테고리의 다른 글

Focus  (0) 2022.05.21
플러터 2.0 버튼  (0) 2022.03.03
Navigator.pushNamed와 routes로 페이지 이동  (0) 2022.03.01
Widget  (0) 2022.02.12
[Mac M1] Flutter SDK 설치  (0) 2022.02.06