#android #mysql #flutter #dart
#Android #mysql #флаттер #dart
Вопрос:
я загружаю список из MySQL, начальная загрузка в порядке, все значения также отлично распечатываются и отображаются просто отлично.
I / flutter (30729): myvar2: [Member1, Member2, Member3, Member4]
Я использую https://github.com/danvick/flutter_form_builder аддон.
когда я перехожу от одного шага к другому, значения все еще находятся в полях, пока я не нажму / не выберу другой элемент, он сбрасывает значения на null и выбирает только одно. После того, как я повторно отправлю / повторно выберу те же или другие значения, список снова сохраняется просто отлично, пока я не выйду из области видимости и не выберу другого участника. Таким образом, значения сохраняются до тех пор, пока я не перейду из области видимости на другой шаг, и когда я выбираю любого из членов, список сбрасывается. Значения из выпадающего списка все еще присутствуют в site of view, поэтому в основном мне нужно их переписать, чтобы сохранить без нулей в mysql.
Я устанавливаю длину списка с предыдущего шага, поэтому после этого, даже если я что-то изменю, значение индекса может быть заменено.
Что я делаю не так?
I / flutter (30729): myvar2: [null, null, Member7, null]
Widget myWidget(BuildContext context) {
return FutureBuilder<List<String>>(
future: _members,
builder: (BuildContext context, AsyncSnapshot<List<String>> snapshot) {
List<Widget> children;
List<String> mylist = List<String>(data.myvar1.length);
print("myvar2: " data.myvar2.toString());
if (snapshot.hasData) {
if (getStr(data.myvar1) != null amp;amp; data.myvar1.length > 0) {
children = <Widget>[
for (var i = 0; i < data.myvar1.length; i )
Column(
children: <Widget>[
FormBuilderCheckboxList(
attribute: "my_checkbox",
initialValue: null,
options: [
FormBuilderFieldOption(
value: data.myvar1[i].toString()),
],
),
FormBuilderDropdown(
attribute: "my_dropdown",
decoration: InputDecoration(
labelStyle: TextStyle(fontSize: _labelFont)),
initialValue: getStr(data.myvar2[i]),
allowClear: true,
hint: Text('Pick member'),
items: snapshot.data
.map((members) => DropdownMenuItem(
value: members, child: Text("$members")))
.toList(),
onSaved: (str) {
mylist[i] = str;
data.myvar2 = mylist;
},
onChanged: (str) {
mylist[i] = str;
data.myvar2 = mylist;
},
),
],
),
];
} else {
children = <Widget>[Column(children: <Widget>[])];
}
} else if (snapshot.hasError) {
children = <Widget>[
Icon(
Icons.error_outline,
color: Colors.red,
size: 60,
),
Padding(
padding: const EdgeInsets.only(top: 16),
child: Text('Error: ${snapshot.error}'),
)
];
} else {
children = <Widget>[
Center(
child: Container(
child: CircularProgressIndicator(
strokeWidth: 5.0,
),
margin: EdgeInsets.all(5),
width: 60,
height: 60,
),
),
const Padding(
padding: EdgeInsets.only(top: 16),
child: Text('Loading...'),
)
];
}
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: children,
),
);
},
);
}
Спасибо за ответ.
Комментарии:
1. Что за переменная «данные»?
2. статические данные MyData = MyData(); и следующие myvar1, myvar2 — это var