Оператор ‘<' не может быть вызван безоговорочно, потому что получатель может быть 'null'. Попробуйте добавить нулевую проверку к цели ('!')

#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"),
          ),