Мне нужно передать любой тип пользователя в TextField, а затем использовать его в другом виджете с отслеживанием состояния. Как передать данные в myController TextField. Я использую это для поиска API на основе пользовательского ввода, и мне нужно передать эти данные во время перехода на другой экран.
TextField(
controller: myController,
decoration: InputDecoration.collapsed(
hintText: ' Search by Product Name',),
onSubmitted: (value) { Navigator.push(context, MaterialPageRoute(builder: (context)=> ProductBySearch()));},),
class ProductBySearch extends StatefulWidget {
@override
_ProductBySearchState createState() => _ProductBySearchState();
}
class _ProductBySearchState extends State<ProductBySearch> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<List<Product>>(
future: getProductByBanner1(http.Client(), mycontroller),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
if (snapshot.hasData) {
return ProductByBanner1Grid(
product: snapshot.data,
);
} else {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(),
Container(
height: 15,
width: double.infinity,
),
Text('Factory2Homes'),
],
));
}
},
),
);
}
}
Вы можете передать данные конструктору Widget
, встроенному в MaterialPageRoute
билдер. Эти данные являются самим myController.text
.
class ProductBySearch extends StatefulWidget {
const ProductBySearch({Key key, @required this.productName}) : super(key: key);
final String productName;
// (...)
}
А потом
MaterialPageRoute(builder: (context) => ProductBySearch(
productName: myController.text,
))
Приглашаю вас прочитать Отправить данные на новый экран Учебник Flutter Cookbook. Это должно объяснить вам концепцию довольно хорошо.
Спас мой день! :) . Я был сбит с толку тем, как передавать данные, если нет класса, такого как Todo.