I would like show the default user and password for a database when I select the DBMS.
But when I change the dropdown value the user and password is not changed even I have changed its value.
Look the code:
import 'dart:html';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appTitle = 'Test App';
return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: MyForm(),
),
);
}
}
class MyForm extends StatefulWidget {
const MyForm({Key? key}) : super(key: key);
@override
MyFormState createState() => MyFormState();
}
class MyFormState extends State<StatefulWidget> {
String _dbms = 'PostgreSQL';
String _user = 'postgres';
String _pasw = 'postgres';
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text('DBMS'),
Container(
width: 150.0,
child: DropdownButton(
value: _dbms,
items: <String>['SQLite', 'Firebird', 'MySQL', 'PostgreSQL']
.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String? newValue) {
setState(() {
_dbms = newValue!;
switch (_dbms) {
case 'PostgreSQL':
_user = 'postgres';
_pasw = 'postgres';
break;
case 'MySQL':
_user = 'root';
_pasw = '';
break;
case 'Firebird':
_user = 'SYSDBA';
_pasw = 'masterkey';
break;
default:
_user = '';
_pasw = '';
break;
}
});
},
),
),
Text('User'),
Container(
width: 150.0,
child: TextFormField(
initialValue: '$_user',
onChanged: (value) => _host,
),
),
Text('Password'),
Container(
width: 150.0,
child: TextFormField(
initialValue: _pasw,
onChanged: (value) => _pasw,
),
),
],
),
),
],
);
}
}
I change the value of the properties but it is not reflected on components.
How I can do this?
Thanks.