#flutter #dart
#flutter #дротик
Вопрос:
мой код:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
void main(){
runApp(myapp());
}
info(a){
return a;
}
class myapp extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
home: homepage(),
);
}
}
class homepage extends StatefulWidget{
@override
_homePage createState()=>_homePage() ;
}
class _homePage extends State<homepage>{
@override
Widget build(BuildContext context) {
// TODO: implement build
return StreamBuilder(stream:Stream.periodic(Duration(seconds: 3),(a)=>a) ,
builder: (ctx, snapshot){
return Scaffold(
appBar: AppBar(title: Text(
(snapshot.hasData amp;amp; snapshot.data < 10)?"${snapshot.data}":"demo"),
),
body: Center(
child: snapshot .connectionState==ConnectionState.waiting?CircularProgressIndicator():Text("done"),
),
);
},);
}
}
у меня ошибка :
Оператор ‘<‘ не может быть вызван безоговорочно, потому что получатель может быть ‘null’. Попробуйте добавить нулевую проверку к целевому объекту (‘!’).
когда я перехожу snapshot.hasData amp;amp; snapshot.data < 10
на snapshot.hasData amp;amp; snapshot.data! < 10
или snapshot.hasData amp;amp; snapshot!.data < 10
ошибка не решает проблему
кто-нибудь знает решение?
Ответ №1:
Вы получаете эту ошибку, потому что включена защита от нуля. Так что либо выключите его https://dart.dev/null-safety/unsound-null-safety
Или
return StreamBuilder<int?>( # add type
stream: Stream.periodic(Duration(seconds: 3), (a) => a),
builder: (ctx, snapshot) {
return Scaffold(
appBar: AppBar(
title: Text((snapshot.hasData amp;amp; snapshot.data! < 10) # add bang operator
? "${snapshot.data}"
: "demo"),
),