不使用构造函数将StatefulWidget数据传递给State类

我设法通过构造函数将Stateful类变量的值传递给State类,如下所示:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'Demo',

home: MyHomePage('John', 'Morison'),

);

}

}

class MyHomePage extends StatefulWidget {

MyHomePage(this.fname, this.lname);

final String fname;

final String lname;

@override

_MyHomePageState createState() => _MyHomePageState(fname, lname);

}

class _MyHomePageState extends State<MyHomePage> {

_MyHomePageState(this.fname, this.lname);

final String fname;

final String lname;

@override

Widget build(BuildContext context) {

return Scaffold(

body: Center(

child: Text('Hello $fname $lname'),

)

);

}

}

太奇怪了,因为有两个以上的变量,所以我不得不做很多工作。有没有更好的办法?

回答:

是的,有widget

从文档:

>       /// The current configuration.

> ///

> /// A [State] object's configuration is the corresponding

> [StatefulWidget]

> /// instance. This property is initialized by the framework before

> calling

> /// [initState]. If the parent updates this location in the tree to a

> new

> /// widget with the same [runtimeType] and [Widget.key] as the current

> /// configuration, the framework will update this property to refer to

> the new

> /// widget and then call [didUpdateWidget], passing the old

> configuration as

> /// an argument.

> T get widget => _widget;

> T _widget;

代码如下所示:

    import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'Demo',

home: MyHomePage('John', 'Morison'),

);

}

}

class MyHomePage extends StatefulWidget {

MyHomePage(this.fname, this.lname);

final String fname;

final String lname;

@override

_MyHomePageState createState() => _MyHomePageState();

}

class _MyHomePageState extends State<MyHomePage> {

@override

Widget build(BuildContext context) {

return Scaffold(

body: Center(

child: Text('Hello ${widget.fname} ${widget.lname}'),

)

);

}

}

以上是 不使用构造函数将StatefulWidget数据传递给State类 的全部内容, 来源链接: utcz.com/qa/420136.html

回到顶部