flutter_provider 화면 전이 Navigator.pop(context)로 이전의 페이지로 돌아오면 새까만 화면이 된다

flutter에서 Provider를 사용한 화면을 구현했습니다.
화면은 2장.
첫 페이지(FirstPage)에 다음 페이지로 전환하는 버튼을 하나,
다음 페이지(NextPage)에 첫 페이지로 돌아가기 버튼을 하나 배치하고 있습니다.







pubspec.yml
dependencies:
  flutter:
    sdk: flutter
  provider: ^4.1.2

main.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sugukesu/test_model.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
       primarySwatch: Colors.blue,
      ),
      home: FirstPage(),
    );
  }
}

// 最初のページ
class FirstPage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
            onPressed: (){
              Navigator.push(
                context,
                MaterialPageRoute(
                  builder: (context) => NextPage(),
                ),
              );
            },
            child: Text('次のページへ')),
      ),
    );
  }
}

// 次のページ
class NextPage extends StatelessWidget{

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "次のページ",
      home: ChangeNotifierProvider<testModel>(
        create: (context) => testModel(),
        child: Consumer<testModel>(
          builder: (context, model, child) => Scaffold(
            body: Center(
              child: ElevatedButton(
                  onPressed: (){
                    Navigator.pop(context);
                  },
                  child: Text('戻る'),
              )
            ),
          ),
        ),
      ),
    );
  }
}


test_model.dart
class testModel extends ChangeNotifier{

  // 使わないのでとりあえずnull

}

조사한 것



참고:
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 53723294 / f ぅ r ゔ ぃ 가 r 뽀 p

분명히 NextPage에 MaterialApp을 사용하는 것이 문제 인 것 같습니다.
MaterialApp을 Scaffold로 변경하여 문제없이 이전 페이지로 돌아갈 수있었습니다.
우선 구현은 할 수 있었습니다만 원인에 대해서는 향후 확인해 보겠습니다.

main.dart
// 次のページ
class NextPage extends StatelessWidget{

  @override
  Widget build(BuildContext context) {
    // MaterialAppからScaffoldに変更
    return Scaffold(
        body: ChangeNotifierProvider<testModel>(
          create: (context) => testModel(),
          child: Consumer<testModel>(
            builder: (context, model, child) => Scaffold(
              body: Center(
                child: ElevatedButton(
                    onPressed: (){
                      Navigator.pop(context);
                    },
                    child: Text('戻る'),
                )
              ),
            ),
          ),
        ),
    );
  }
}

좋은 웹페이지 즐겨찾기