首页 > 解决方案 > Flutter/StatefulWidget之间如何传递和获取数据

问题描述

我是一名初级(或不到 1 个月的学习者)飞镖/颤振开发人员。我尝试创建一个示例配置文件应用程序 - 在主屏幕上显示用户的个人资料图像。- 用户可以使用应用内的相机拍照或从相册中选择并显示为个人资料图片。

我创建了 2 个主视图控制器。

  1. 主要.dart

    void main() {
     runApp(new MaterialApp(
     home: new MyApp(),
     routes: <String, WidgetBuilder>{
      '/screen1': (BuildContext context) => new MyApp(),
      '/screen3': (BuildContext context) => new UploadAvatarButton()
      },
     ));
    }
    
     class MyApp extends StatefulWidget {
      final String _images =  "";
      MyApp(String _images, {Key key}) : super(key: key);
      @override
      State<StatefulWidget> createState() {
       return new MyHomePage();
      }
     }
    
     class MyHomePage extends State<MyApp> {
     @override
     Widget build(BuildContext context) {
    
     Widget myPhoto = new Container(
     //Attribute
     child: new FlatButton(
      child: new Container(
       decoration: new BoxDecoration(
        shape: BoxShape.circle,
        image: new DecorationImage(
         fit: BoxFit.cover, image: new AssetImage('images/sample.jpg')),
        ),
       ),
     onPressed: _showPersBottomSheetCallBack,
      ),
     );
    
     return new MaterialApp(
     home: new Scaffold(
     //Header
     body: new Center(
      child: new Column(
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          new Container(child: myPhoto),
    

和 2.cameraView.dart

class UploadAvatarButton extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new MakeUploadAvatarButtonState();
  }
class MakeUploadAvatarButtonState extends State<UploadAvatarButton> {
  File _image;
  Future getImage() async {
    var image = await ImagePicker.pickImage(source: ImageSource.camera);
    setState(() {
      _image = image;
//Try to send data or image back to main screen
      List<int> imageBytes = image.readAsBytesSync();
      String base64Image = BASE64.encode(imageBytes);
//send data back
      Navigator.push(context, new MaterialPageRoute(builder: (_) => 
  new MyApp(_image.)));
    });
  }

如您所见,我使用方法从相机发送回图像

List<int> imageBytes = image.readAsBytesSync();
  String base64Image = BASE64.encode(imageBytes);
  Navigator.push(context, new MaterialPageRoute(builder: (_) => 
  new MyApp(_image.)));

在主要

final String _images =  "";
MyApp(String _images, {Key key}) : super(key: key);

但是,我得到了错误

[dart] The constructor returns type 'dynamic' that isn't of expected type 'Widget'.

你能告诉我吗?

最好的问候谢谢

标签: dartflutter

解决方案


将构造函数修改为

我的应用程序(this._images)

访问 MyHomePage 类中的图像

小部件._images


推荐阅读