質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

681閲覧

テキストフィールドに入力された文章を次ページで表示したい。

MasaBigBrother

総合スコア0

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2021/06/24 13:53

前提・実現したいこと

テキストフィールド入力された文章を次の確認ページで表示したいのと同時に、文章を入力するページには、その一つ前のページで選ばれた文章を表示したい。
よろしくお願いします。

発生している問題・エラーメッセージ

おそらくNullに関する問題。

════════ Exception caught by widgets library ═══════════════════════════════════ The following _CastError was thrown building resultPage(dirty): Null check operator used on a null value

該当のソースコード

Dart

1import 'package:flutter/material.dart'; 2import 'package:hermeneutic_composers/ResultPage.dart'; 3 4class writingPage extends StatelessWidget { 5 final String theme; 6 7 writingPage({ 8 required this.theme, 9 }); 10 String? name; 11 12 13 Widget build(BuildContext context) { 14 return Scaffold( 15 appBar: AppBar( 16 title: Text("お題確認画面"), 17 ), 18 body: Container( 19 child: Column( 20 crossAxisAlignment: CrossAxisAlignment.center, 21 children: [ 22 Text('お題は「' + theme + '」です。'), 23 TextField( 24 onChanged: (value) { 25 setState(() { 26 name = value; 27 }); 28 }, 29 decoration: InputDecoration(hintText: '文章を入力してください。'),//ここに文章を入力したい。 30 ), 31 ElevatedButton( 32 child: Text('投稿画面へ'), 33 onPressed: () { 34 Navigator.push( 35 context, 36 MaterialPageRoute( 37 builder: (context) => resultPage(name: name)), 38 ); 39 }), 40 ], //children 41 ), 42 )); 43 } 44 45 void setState(Null Function() param0) {} 46}

resultPage

1import 'package:flutter/material.dart'; 2 3class resultPage extends StatelessWidget { 4 resultPage({ 5 required this.name, 6 }); 7 String? name; 8 9 @override 10 Widget build(BuildContext context) { 11 return Scaffold( 12 appBar: AppBar( 13 title: Text("制作完了"), 14 ), 15 body: Container( 16 child: Column( 17 crossAxisAlignment: CrossAxisAlignment.center, 18 children: [ 19 Text(name!),//ここに前の文章を表示したい。 20 ], //children 21 ), 22 )); 23 } 24}

試したこと

writingPageのString? name;の部分をlast String name;にしてresultPageのString? name;の部分をfinal String name;にして見ましたが、そうするとLastInitializationErrorという別のエラーが生じました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

そもそもの問題として、StatelessWidgetでは動作しない。
このことから、StatefulWidgetのクラスを作り、前ページから要素を受け渡す。
その後に、StatefulWidgetクラスとwritingPageクラスの間で要素を受け渡すことによって問題を解決。

投稿2021/06/25 11:57

MasaBigBrother

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問