Stateクラス内にinitStateをインポートするたびに、このエラーが表示されます
クラス「IntroViewState」はメソッド「State」を定義できず、同じ名前のフィールド「initState.State」を持つことができません。
これは私がinitStateを呼び出すために使用したコードです
import 'package:flutter/material.dart';
import 'package:idb/pages/adminpage.dart';
import 'package:idb/pages/homepage.dart';
import 'package:intro_views_flutter/Models/page_view_model.dart';
import 'package:intro_views_flutter/intro_views_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
class IntroView extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return IntroViewState();
}
}
class IntroViewState extends State<IntroView> {
BuildContext context;
Future checkFirstSeen() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool _seen = (prefs.getBool('seen') ?? true);
setState(() {
if (_seen) {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new AdminPage()));
} else {
prefs.setBool('seen', true);
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new IntroView()));
}
});
}
final pages = [
PageViewModel(
pageColor: Colors.white,
bubble: Image.asset('assets/t.jpg'),
body: Text('with the app you can check the card validation'),
title: Text('Card Validation'),
textStyle: TextStyle(
color: Colors.tealAccent,
),
mainImage: Image.asset(
'assets/check.jpg',
height: 500.0,
width: 500.0,
alignment: Alignment.center,
)),
];
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primaryColor: Colors.orange,
primarySwatch: Colors.orange,
accentColor: Colors.orangeAccent,
),
debugShowCheckedModeBanner: false,
home: Builder(
builder: (context) => IntroViewsFlutter(
pages,
onTapDoneButton: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => AdminPage()),
);
},
onTapSkipButton: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => AdminPage()),
);
},
pageButtonTextStyles:
TextStyle(color: Colors.black, fontSize: 18.0),
),
),
);
}
@override
void initState {
super.initState;
checkFirstSeen();
}
}
どうして?どうすれば解決できますか?そして他のエラーが表示されます
NoSuchMethodError:メソッド 'ancestorStateOfType'がnullで呼び出されました。E / flutter(28147):レシーバー:null E / flutter(28147):呼び出しを試みました:ancestorStateOfType( 'TypeMatcher'のインスタンス)E / flutter(28147):#0
Object.noSuchMethod(dart:core / runtime / libobject_patch.dart :50:5)E / flutter(28147):#1 Navigator.of(package:flutter / src / widgets / navigator.dart:1288:19)E / flutter(28147):#2IntroViewState.checkFirstSeen。(package:idb / pages / introview.dart:31:15)
削除context
、私はそれがヌルの問題を引き起こしていると思います
class IntroViewState extends State<IntroView> {
Future checkFirstSeen() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool _seen = (prefs.getBool('seen') ?? true);
if (_seen) {
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new AdminPage()));
} else {
prefs.setBool('seen', true);
Navigator.of(context).pushReplacement(
new MaterialPageRoute(builder: (context) => new IntroView()));
}
}
final pages = [
PageViewModel(
pageColor: Colors.white,
bubble: Image.asset('assets/t.jpg'),
body: Text('with the app you can check the card validation'),
title: Text('Card Validation'),
textStyle: TextStyle(
color: Colors.tealAccent,
),
mainImage: Image.asset(
'assets/check.jpg',
height: 500.0,
width: 500.0,
alignment: Alignment.center,
)),
];
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primaryColor: Colors.orange,
primarySwatch: Colors.orange,
accentColor: Colors.orangeAccent,
),
debugShowCheckedModeBanner: false,
home: Builder(
builder: (context) => IntroViewsFlutter(
pages,
onTapDoneButton: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => AdminPage()),
);
},
onTapSkipButton: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => AdminPage()),
);
},
pageButtonTextStyles:
TextStyle(color: Colors.black, fontSize: 18.0),
),
),
);
}
@override
void initState {
super.initState();
checkFirstSeen();
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加