pub.dev 에 접속한다.
flutter svg를 검색하면 flutter_svg라이브러리를 클릭하고 아래의 순서대로 의존성을 복사한다.
복사한 후에 pubspec.yaml의 dependencies 부분에 아래와 같이 붙여넣는다.
dependencies:
flutter:
sdk: flutter
flutter_svg: ^0.22.0
build(BuildContext context) {
return MaterialApp(
initialRoute: "/login",
routes: {
"/login": (context) => LoginPage(),
"/home" : (context) => HomePage()
},
);
}
Widget
class CustomTextFormField extends StatelessWidget {
final String text;
const CustomTextFormField({required this.text});
theme: ThemeData(
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(
backgroundColor: Colors.black,
primary: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
minimumSize: Size(400, 60),
),
),
),
TextFormField(
validator: (value){
if(value == null || value.isEmpty){
return "Please enter some text";
} else {
return null;
}
//value!.isEmpty ? "Please enter some text" : null
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(20),
),
if(_formKey.currentState!.validate()){
Navigator.pushNamed(context, "/home");
}
class CustomTextFormField extends StatelessWidget {
final String text;
final mValid;
const CustomTextFormField({required this.text, required this.mValid});
CustomTextFormField(text: "Email",
mValid: (value){
if(value == null || value.isEmpty){
return "Please enter some text";
} else if(!isEmail(value)){
return "email 형식이 아닙니다.";
} else {
return null;
}
}),
SizedBox(height: medium_gap,),
CustomTextFormField(
text: "Password",
mValid: (value){
if(value == null || value.isEmpty){
return "Please enter some text";
} else if(value.toString().length > 20) {
return "Too long password.";
} else{
return null;
}
},),