Ich versuche, eine "Profil bearbeiten" -Seite zu erstellen, wo ich alle Benutzerdaten laden und den Benutzer ändern lassen kann. Die Verwendung der beiden Eigenschaften value
und text
auf der TextEditingController
führt jedoch dazu, dass die Daten in der TextFormField
nicht geändert werden können. Ich kann an den Anfang davon hinzufügen, aber ich kann keine Zeichen daraus löschen.Wie füllt man das Flatter-Formularfeld richtig auf?
Um dieses Verhalten näher zu erläutern, kann ich im folgenden Screenshot mehr in das Feld eingeben (als ich das "Asdf" gemacht habe), aber von wo der Cursor ist, kann ich den Cursor nicht nach rechts bewegen oder löschen das "F" oder einer der dort ursprünglich platzierten Charaktere.
In der OnSaved
Funktion der TextFormField
, die value
param ist der vollständige Text der Form zum Zeitpunkt der Einreichung, in diesem Fall "AsdfFrederick".
Hier ist mein Code:
import 'dart:async';
import 'package:flutter/material.dart';
import '../models/user.dart';
class EditProfileView extends StatefulWidget {
@override
_EditProfileViewState createState() => new _EditProfileViewState();
}
class _EditProfileViewState extends State<EditProfileView> {
final GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
void _handleSubmitted() {
final FormState form = _formKey.currentState;
if (!form.validate()) {
} else {
form.save();
User.instance.save().then((result) {
print("Saving done: ${result}.");
Navigator.pop(context);
});
}
}
@override
Widget build(BuildContext context) {
final ThemeData themeData = Theme.of(context);
final DateTime today = new DateTime.now();
// controllers for form text controllers
final TextEditingController _firstNameController =
new TextEditingController();
//_firstNameController.value = new TextEditingValue(text: User.instance.first_name);
_firstNameController.text = User.instance.first_name;
final TextEditingController _lastNameController =
new TextEditingController();
_lastNameController.text = User.instance.last_name;
return new Scaffold(
appBar: new AppBar(title: const Text('Edit Profile'), actions: <Widget>[
new Container(
padding: const EdgeInsets.fromLTRB(0.0, 10.0, 5.0, 10.0),
child: new MaterialButton(
color: themeData.primaryColor,
textColor: themeData.secondaryHeaderColor,
child: new Text('Save'),
onPressed:() {
_handleSubmitted();
Navigator.pop(context);
},
))
]),
body: new Form(
key: _formKey,
autovalidate: _autovalidate,
onWillPop: _warnUserAboutInvalidData,
child: new ListView(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
children: <Widget>[
new Container(
child: new TextFormField(
decoration: const InputDecoration(labelText: "First Name", hintText: "What do people call you?"),
autocorrect: false,
controller: _firstNameController,
onSaved: (String value) {
User.instance.first_name = value;
},
),
),
new Container(
child: new TextFormField(
decoration: const InputDecoration(labelText: "Last Name"),
autocorrect: false,
controller: _lastNameController,
onSaved: (String value) {
User.instance.last_name = value;
},
),
),
],
)));
}
}
Hier flutter doctor
:
% flutter doctor
[✓] Flutter (on Mac OS X 10.12.6 16G29, locale en-US, channel alpha)
• Flutter at /Users/frederickcook/flutter
• Framework revision 701d534ba9 (2 weeks ago), 2017-09-12 14:01:51 -0700
• Engine revision 31d03de019
• Tools Dart version 1.25.0-dev.11.0
[✓] Android toolchain - develop for Android devices (Android SDK 26.0.0)
• Android SDK at /Users/frederickcook/Library/Android/sdk
• Platform android-26, build-tools 26.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.0)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.0, Build version 9A235
• ios-deploy 1.9.2
• CocoaPods version 1.2.1
[✓] Android Studio (version 2.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Java version OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
[✓] IntelliJ IDEA Community Edition (version 2017.2.5)
• Flutter plugin version 17.0
• Dart plugin version 172.4155.35
[✓] Connected devices
• iPhone 7 • 2AE532E3-5B4B-4D8D-8CFB-F54C3BF6F8EE • ios • iOS 11.0 (simulator)