Flutter/ Как передавать и получать данные между Statefulwidget

Я младший (или меньше, всего 1 месяц) разработчик дартс / флаттер. Я пытаюсь создать пример приложения Proflie, которое - Показать изображение профиля пользователя на главном экране. - Пользователь может использовать камеру в приложении, чтобы сделать фотографию или выбрать из альбома и показать в качестве личного профиля фото.

У меня есть 2 основных viewController.

  1. main.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'.

Не могли бы вы посоветовать мне?

С наилучшими пожеланиями Спасибо

1 ответ

Изменить конструктор как

MYAPP (this._images)

получить доступ к изображению в классе MyHomePage

widget._images

Другие вопросы по тегам